希尔排序

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了希尔排序脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。

基本思想

  希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。

希尔算法图示

希尔排序

 

 

 

代码实现

package sort;

import java.util.Arrays;

public class ShellSort {
    public static void main(String[] args) {
        int[]arr={8,9,1,7,2,3,5,4,6,0};
        shellSort(arr);

    }
    //希尔排序时,对有序序列在插入时采用交换法
    public static void shellSort(int[] arr){
        int temp=0;
        int count=0;
        for(int gap=arr.length/2;gap>0;gap/=2){
            for(int i=gap;i<arr.length;i++){
                //遍历各组中所有的元素(共gap组)步长为gap
                for (int j=i-gap;j>=0;j-=gap){
                    //遍历各组中所有元素大于加上步长后的那个元素,说明交换
                    if(arr[j]>arr[j+gap]){
                        temp=arr[j];
                        arr[j]=arr[j+gap];
                        arr[j+gap]=temp;
                    }
                }
            }
            System.out.PRintln("希尔排序第"+(++count)+"轮");
            System.out.println(Arrays.toString(arr));
        }
    }
}

运行结果

希尔排序

 

脚本宝典总结

以上是脚本宝典为你收集整理的希尔排序全部内容,希望文章能够帮你解决希尔排序所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。