希尔排序
之前我们学习过插入排序,是从头开始,依次进行排序和换位
希尔排序的原理就是通过分隔来比较大小,每过一次循环,将会将分隔数/2变化,
模板:使用两个for循环和一个while循环,时间复杂度是:o(nlogn)~o(n2)之间,优于冒泡排序
static void shellSort(int a []){ for(int step = a.length/2;step>0;step/=2){ for(int j = step;j<a.length;j++){ int value = a[j]; int k = j-step; while(k>-1&&a[k]>value){ a[k+step] = a[k]; k-=step; } a[k+step] =value; } } }