各算法的时间复杂度 平均时间复杂度 插入排序 O(n^2) 冒泡排序 O(n^2) 选择排序 O(n^2) 快速排序 O(n log n) 堆排序 O(n log n) 归并排序 O(n log n) 基数排序 O(n) 希尔排序 O(n^1.25)1 快速排序(QuickSort)快速排序是一个就...
分类:
编程语言 时间:
2014-10-11 21:51:36
阅读次数:
222
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位本文地址:ht...
分类:
编程语言 时间:
2014-10-10 14:33:40
阅读次数:
226
弗罗贝尼乌斯範数对 p = 2,这称为弗罗贝尼乌斯範数(Frobenius norm)或希尔伯特-施密特範数( Hilbert–Schmidt norm),不过后面这个术语通常只用于希尔伯特空间。这个範数可用不同的方式定义:这里 A* 表示 A 的共轭转置,σi 是 A 的奇异值,并使用了迹函数。弗...
分类:
其他好文 时间:
2014-10-07 22:15:54
阅读次数:
236
简单插入排序的原理很简单: 所谓插入排序,就是将新加入的数据插入到一个有序数组中,并且保证插入后有序。这就要求要找到插入的位置。(图片来自维基百科)对于一个已经存在的数组(乱序),要将其有序排列(这里取从小到大),就可以按照下面的步骤: 1.先假定一个有序数组,这个数组只有一个元素,就是第一个元.....
分类:
编程语言 时间:
2014-10-07 21:43:04
阅读次数:
232
插入排序的算法复杂度为O(n2),但假设序列为正序可提高到O(n),并且直接插入排序算法比較简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描写叙述希尔排序:将无序数组切割为若干个子序列,子序列不是逐段切割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小.....
分类:
其他好文 时间:
2014-10-05 18:35:58
阅读次数:
197
java实现package sort;public class ShellSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated ...
分类:
其他好文 时间:
2014-10-02 16:21:53
阅读次数:
247
希尔排序(Shellsort)的名称源于它的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一。不过,自从它最初被发现,又过了若干年才证明了它的亚二次时间界。它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。希尔排...
分类:
其他好文 时间:
2014-09-28 23:13:15
阅读次数:
251
取一个小于n的整数作为第一个增量,把序列分组。所有距离为增量的倍数的元素放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量(第二个= 0 && guard = 1){ shellInsertSort(elements, di); //每次减半,最后增量必须为1 di =...
分类:
编程语言 时间:
2014-09-28 21:25:25
阅读次数:
187