您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

希尔排序法(图文)

第十三双眼睛2022-06-21【数据结构与算法】人已围观

简介希尔排序法

希尔排序法也是一种插入排序,是简单插入排序法经过改造的一种排序方法,基本思想是:
把记录按下标的一定增量分组,对每组按简单插入排序法进行排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量变成1时,整个文件就成了一组,算法便终止。
程序如下:
package day006;
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};
        shellSort2(arr);
        System.out.println(Arrays.toString(arr));
    }
    // 希尔排序法交换法实现
    public static void shellSort(int []arr){
        int temp = 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-=gap){
                    if(arr[j]>arr[j+gap]){
                        temp = arr[j];
                        arr[j] = arr[j+gap];
                        arr[j+gap] = temp;
                    }
                }
            }
        }
    }
    // 希尔排序法移位法实现
    public static void shellSort2(int []arr){
        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];
                if(arr[j]<arr[j-gap]){
                    while (j-gap>=0 && temp<arr[j-gap]){
                        arr[j] = arr[j-gap];
                        j-=gap;
                    }
                    arr[j]=temp;
                }
            }
        }
    }
}
测试结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们