八大排序--- 希尔排序(最小增量排序)
2017-03-19 14:25
351 查看
八种排序的关系:
一、基本思想
算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。package com.chb.sort; /** * 希尔排序(最小增量排序) * 增量d=n/2的序列进行 直接插入排序 * d减小 直至d=1排序结束 * */ public class ShellSort { public static void main(String[] args) { shellSort(a); } static int a[]={1,54,6,3,78,34,12,45,56,100}; public static void shellSort(int[] a){ int d = a.length; while(true) { d = (int) Math.ceil(d/2); for (int i = 0; i <= d; i++) {// //直接插入排序 j j+d j+2d ... for (int j = i; j < a.length-d; j+=d) { int k = j;//j以前部分已经为有序 int insertNum = a[k+d]; //要插入的数据 while(k >= j && a[k] > insertNum){ a[k+d] =a[k]; k-=d; }//跳出循环 a[k] < insertNum, //所以k后面的是要插入的位置 //if ((k+d)!= j) { a[k+d] = insertNum; //} } } if (d == 1) { break; } } for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } } }
相关文章推荐
- 插入排序) 希尔排序 (最小增量排序)
- 数据结构----希尔排序(最小增量排序)
- 算法笔记2-排序-希尔排序(最小增量排序)
- 排序算法(二):希尔排序(最小增量排序)
- 回首Java——希尔排序(最小增量排序)
- Java八大排序算法之"希尔排序(最小增量排序)"算法
- 一点一点的积累算法JAVA版之希尔排序(最小增量排序)
- 八大排序--希尔排序
- 八大排序之希尔排序
- 插入排序、折半插入排序、希尔排序(缩小增量排序)
- Java排序--》希尔排序(增量排序)
- 理解希尔排序,缩减增量排序
- 八大排序之希尔排序
- 希尔排序(增量排序)
- ReviewForJob——希尔排序(缩小增量排序)之塞奇威克增量序列
- 八大排序之希尔排序
- Java 希尔排序(缩小增量排序)
- Java提高 - 八大排序方法之希尔排序
- (C语言)八大排序之:希尔排序
- 一天一排序之“希尔排序(缩小增量排序)”