希尔排序java实现

希尔排序个人感觉还是有一点难度的,当时在理解的时候花了不少时间.
希尔排序这里面有一个叫做"步长"的概念.就是每次通过这些步长找出一组元素,然后对这些元素进行排序.
步长的初始值一般都是数组长度的1/2,然后不断地取其1/2.

代码:

private static void sort(int[] arr,int step){
    for (int i = step; i < arr.length; i++) {
        for (int j = i; j >=step; j-=step) {
            if(arr[j]<arr[j-step]){
                int temp = arr[j];
                arr[j] = arr[j-step];
                arr[j-step]=temp;
            }else{
                break;
            }
        }
    }
}


public static void main(String[] args) {
    int[] arr = new int[]{1,4,2,6,9,6};
    for (int i = arr.length/2; i > 0; i/=2) {
        sort(arr,i);
    }
}

书上的代码:

void shellsort(int[] arr){
    int j;
    for (int gap = arr.length/2; gap >0; gap/=2) {
        for (int i = gap; i < arr.length; i++) {
            int temp=arr[i];
            for(j=i;j>=gap&&temp<arr[j-gap];j-=gap){
                arr[j] = arr[j-gap];
            }
            arr[j]=temp;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 封装成类: 测试: 输出:[9, 0, 6, 5, 8, 2, 1, 7, 4, 3][0, 1, 2, 3, 4...
    imroc阅读 2,507评论 0 0
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 6,769评论 0 35
  • 前几天,我从东莞出发去广州,车行驶到广州白云隧道入口20米,前车突然紧急刹车,我反应快速杀车,车稳稳停下来了,但是...
    妈妈必读阅读 2,540评论 0 0
  • 喜欢是一种爱好
    珠竹阅读 1,209评论 0 1
  • 佛家说空,道家说无,耶稣更形象,直接呆在天上。凡夫俗子,云里雾里,看不懂的就是这个空。什么东东,什么都没有吗?那眼...
    多多_7815阅读 1,573评论 0 1