高级排序:希尔排序 博客分类: Sort
程序员文章站
2024-02-04 16:54:46
...
public void shellSort(int[] array){ int limit = 1; int temp; int index; while(limit <= array.length/3){ limit = limit * 3 + 1; } while(limit != 0){ for(int i=limit;i<array.length;i++){ temp = array[i]; index = i; while(index > limit-1 && array[index - limit] >= temp){ array[index] = array[index - limit]; index -= limit; } array[index] = temp; } limit = (limit - 1)/3; } }
效率:
写法非常简单,是对插入排序的改进,也称为增量递减排序,增量的选择影响着算法的效率,没有归并排序那么高的空间复杂度,在一般的排序中都首选希尔排序,时间复杂度为:O(N*(logN)^2)