时间复杂度:未知
是否稳定:不稳定
该排序算法是基于插入算法改进的,适合数据量大的数据排序
public static void shellSort(int[] arr){
if(arr==null || arr.length<2){
return;
}
int N=arr.length;
//gap:增量,间隔gap的为一组,一组内进行插入排序,当gap=1时,整组进行插入排序
for(int gap=N/2;gap>0;gap/=2){
for(int i=gap;i<N;i++){
insertI(arr,gap,i);
}
}
}
public static void insertI(int[] arr,int gap,int i){
int inserted=arr[i];
int j;
for(j=i-gap;j>=0&&inserted<arr[j];j-=gap){
arr[j+gap]=arr[j];
}
arr[j+gap]=inserted;
}