ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java希尔排序

2021-12-04 12:30:41  阅读:160  来源: 互联网

标签:arr java grp int 插入排序 希尔 序列 排序


1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序

 算法描述

先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:

  • 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
  • 按增量序列个数k,对序列进行k 趟排序;
  • 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

package study;

import java.util.Arrays;

public class test {

    public static void main(String[] args) {
        int arr[] = new int[]{5, 4, 9, 2, 7, 3, 1, 8};
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }


    public static void sort(int[] arr) {
        for (int grp = arr .length/2;grp>0;grp/=2){
            for(int i = grp;i<arr.length;i++){
                for(int j= i-grp;j>=0;j-= grp){
                    if (arr[j] > arr[j+grp]){
                            int temp = arr[j];
                            arr[j]=arr[j+grp];
                            arr[j+grp] = temp;
                    }else {
                        break;
                    }
                }
            }
        }
    }


}

标签:arr,java,grp,int,插入排序,希尔,序列,排序
来源: https://blog.csdn.net/weixin_64735186/article/details/121713898

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有