希尔排序:Java(最小增量排序)

来源:互联网 发布:mac拼音怎么打 编辑:程序博客网 时间:2024/06/05 12:28
基本思想:

基本思想:算法先将要排序的一组数按某个增量 dn/2,n为要排序数的个数)分成若

干组,每组中记录的下标相差 d.对每组中全部元素进行直接插入排序,然后再用一个较小

的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到 时,进行直接

插入排序后,排序完成。

图解


Java实现

public class Shell {public void sort(int lists[]) {int temp = 0;double d = lists.length; // 得到长度while (true) {d =  Math.ceil(d/2);// 得到向上取整的数int md =(int) d;for (int x = 0; x < md; x++) {  //对被增量分割的每小组进行直接插入排序for (int i = x+md; i < lists.length; i += md) {      int j = i - md;temp = lists[i];for (; j >= 0 && temp < lists[j]; j -= md) {lists[j + md] = lists[j];}lists[j + md] = temp;}}if (md == 1) {break;}}}}


0 0
原创粉丝点击