算法-希尔排序

来源:互联网 发布:怎么看手机网络制式 编辑:程序博客网 时间:2024/06/12 20:50

Shell排序算法

Shell排序算法严格来说是基于插入排序的思想,其又称为希尔排序或者缩小增量排序。

排序流程

1将有n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个数据为一对,·····。
2一次循环使每一个序列对排好顺序。
3然后,再变为n/4个序列,再次排序。
4不断重复上述过程,随着序列减少最后变为一个,也就完成了整个排序。

注:有余数执行取整操作 当只有一个序列时,逐个对数据比较,按照插入排序算法对该序列进行排序。

代码

public class ShellSort {    public void sort(int[] data){        int current;        int temp;        for(int i=data.length/2;i>=1;i/=2){            for(int j=i;j<data.length;j++){                current=j-i;                temp=data[j];                while(current>=0&&data[current]>temp){                    data[current+i]=data[current];                    current-=i;                }                data[current+i]=temp;            }        }    }}
0 0
原创粉丝点击