zoukankan      html  css  js  c++  java
  • 希尔排序

     希尔排序是希尔(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));
            }
        }
    }

    运行结果

  • 相关阅读:
    线段树
    数学建模中的excel操作
    POJ 3666 Making the Grade
    POJ 1742 Coins
    CF 55D
    POJ 3280 Cheapest Palindrome
    牛客 处女座与复读机
    牛客 处女座的约会
    牛客 小a与星际探索
    POJ 2229 递推
  • 原文地址:https://www.cnblogs.com/ftx3q/p/15750594.html
Copyright © 2011-2022 走看看