希尔排序-java

风格不统一 提交于 2020-01-03 13:05:38
  1. 插入排序的一种,是缩小增量排序
  2. 直接插入排序,在数据比较有序的时候,插入的效率较高。当数据量大且数据不怎么有序的时候,直接插入排序的效率就比较低。
  3. 希尔排序就是在直接排序的基础上进行优化。
public static void shellSort(int[] arr) {
    int len = arr.length;
    int d;
    int i, j, k, min;
    for (d = len / 2; d >= 1; d /= 2) {//确定
        for (i = 0; i < d; i++) {//确定有几组数据
            for (j = i; j<len; j+=d) {//对分组之后的数据进行插入排序。(注意不是冒泡排序)
                min=arr[j];
                for ( k = j-d; k >=0 ; k-=d) {
                        if(arr[k]>min){
                            arr[k+d]=arr[k];
                        }else{
                            break;
                        }
                }
                arr[k+d]=min;
            }
        }
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!