首页 > 编程语言 > 详细

希尔排序法简介以及使用java代码实现

时间:2021-02-12 08:18:12      阅读:66      评论:0      收藏:0      [点我收藏+]

一:

希尔排序(Shell‘s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。

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

技术分享图片

 

 

二:使用代码实现

import java.util.Arrays;

public class 希尔排序 {
    public static void main(String[] args) {
int arr[]={8,6,9,4,3,7,1,2,5,10,0};
num2(arr);
    }
    //交换式
    static  void num(int []arr){
        int temp=0;
        int con=0;
        for(int gap=arr.length/2;gap>0;gap/=2){
            for(int i=gap;i<arr.length;i++){
                for (int j = i-gap; j >=0;j-=5 ) {
                         if(arr[j]>arr[j+gap]){
                             temp=arr[j];
                             arr[j]=arr[j+gap];
                             arr[j+gap]=temp;
                         }
                }
            }
        }
        System.out.println("第"+(++con)+"次 :"+Arrays.toString(arr));
    }
//移动式
    static  void num2(int[]arr) {
        int con=0;
        for (int gap = arr.length / 2; gap > 0; gap /= 2) {
            for (int i = gap; i < arr.length; i++) {
                int j=i;
                int temp=arr[j];
                  while (j-gap>=0&&temp<arr[j-gap]){
                      arr[j]=arr[j-gap];
                      j-=gap;
                  }
                    arr[j]=temp;
                }

            System.out.println("第"+(++con)+"次 :"+Arrays.toString(arr)); }
    }
}

技术分享图片

 

希尔排序法简介以及使用java代码实现

原文:https://www.cnblogs.com/xioayuan/p/14398290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!