希尔排序是不稳定的,但是它比直接插入排序要快得多。
希尔排序又称为缩小增量排序,这是对直接插入排序的一种改进方法,其过程是:首先以d1 (0进行直接插入排序。然后,以d2(0
一般的初次取序列的一半为增量,以后每次减半,直到增量为1。
借用百度百科里的一张图,更直观一些。
// 希尔排序 x待排序数组, n数组长度
private static void shellSor...
分类:
编程语言 时间:
2015-01-29 17:45:49
阅读次数:
199
下面是常见排序算法的速度比较:(从慢到快)
1、冒泡排序O(N^2)
2、简单选择排序O(N^2)
3、直接插入排序O(N^2)
4、折半插入排序O(N^2)
5、希尔排序,近似为O(N^1.25) (尚无定论,但可以确定是N~N^2之间的多项式时间复杂度)
6、堆排序O(NlogN)
7、归并排序O(NlogN)
8、快速排序O(NlogN)
一般来说是快排最快的。但是...
分类:
编程语言 时间:
2015-01-29 09:34:09
阅读次数:
274
直接插入排序是一种简单的排序方法。其基本思想是,开始时将原序列的第一个元素看作一个有序序列。然后依次取出原序列第二个元素及其后面的元素,并将其插入到有序序列中合适的位置,这样经过n-1次插入后就完成排序了。
private static void sort(int[] x, int n){
int i,j,t;
for(i = 1; i < n; i++){ //i表示插入次...
分类:
编程语言 时间:
2015-01-28 22:39:21
阅读次数:
191
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2015-01-28 12:30:14
阅读次数:
191
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。
第一种程序:
void InsertSort1(int arr[] , int n)
{
for(int i=1;i//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分
...
分类:
编程语言 时间:
2015-01-27 16:29:51
阅读次数:
226
SortAscending源程序 public class SortAscending { ?public SortAscending () { ??System.out.println("直接插入排序法"); ?} ?public static int[] sortAscending(int[] with) { // 直接插入法递增排序 ?...
分类:
编程语言 时间:
2015-01-26 19:32:32
阅读次数:
176
希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有...
分类:
编程语言 时间:
2015-01-26 14:56:48
阅读次数:
254
摘要:前几天,看到一篇前辈的博文“程序猿必知的8大排序”,不禁的手痒起来,又一次翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,当中有不足之处,还望各位道友指正出来。先来看看8种排序之间的关系:第一:直接插入排序1.基本思想:在要排序的一组数中,如果前面(n-1) [n>=2] ...
分类:
编程语言 时间:
2015-01-18 22:23:33
阅读次数:
346
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2015-01-18 18:24:42
阅读次数:
232
花了点时间一次性实现9个基本排序算法,
其中包括:
【冒泡排序】,【直接选择排序】,【直接插入排序】,
【希尔排序】,【折半插入排序】,【快速排序】,
【堆排序】,【锦标赛排序】,【归并排序】。
储存方式是用数组,元素可以是支持重载运算符的自定义类型,
有在数组中直接复制的,也有在中间过程中用索引记录的,
但最终都结果都保存在原数组中,废话不多说了,直接上代码!...
分类:
编程语言 时间:
2015-01-17 19:31:03
阅读次数:
226