码迷,mamicode.com
首页 > 编程语言 > 详细

希尔排序

时间:2019-08-10 17:35:41      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:比较   间隔   pre   插入排序   位置   元素   工作   i++   sys   

希尔排序是插入排序的一种,也叫做缩减增量排序,是对插入排序的一种优化,但是不稳定。


public class ShellSort {

/**
*希尔排序,也可以叫做缩减增量排序,不稳定,为了减少比较次数,如插入排序 需要n X n
* 原理:通过比较相距一定间隔的元素来工作;
* 各躺所用的距离随着算法的进行而减少,知道只比较相邻元素的最后一个排序位置
*
* 所间隔的k元素都被排序,相比于插入排序,时间会减少
*/

public static void main(String[] args) {

int[] a = {77, 12, 88, 42, 7, 22, 78};
sort(a);
System.out.println(Arrays.toString(a));
}

public static void sort(int[] a) {

int j;

for(int gap = a.length/2; gap > 0; gap /= 2) {
for(int i = gap; i < a.length; i++) {
int tmp = a[i];
for(j = i; j >= gap && tmp < a[j-gap]; j -= gap) {
a[j] = a[j-gap];
}
a[j] = tmp;
}

}
}

}

希尔排序

标签:比较   间隔   pre   插入排序   位置   元素   工作   i++   sys   

原文地址:https://www.cnblogs.com/l-x-x-y-d-j/p/11332130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!