本周我们来学习希尔排序!
希尔排序
先做一个简单的介绍:
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1,插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
2,但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;
例如:
定义一个无需数组{5,1,9,10,6,2,3,7,4,8}
对里面进行排序
 {
//定义一个无序数组
int[] arr = {5,1,9,10,6,2,3,7,4,8};
int n = arr.length;
//定义一个gap一次把数据分为几组 然后对每个小组进行排序
int gap = n/2;
//用while循环来进行排序
while(gap > 0){
for(int j = gap; j < n; j++){
int i=j;
while(i >= gap && arr[i-gap] > arr[i]){
int temp = arr[i-gap]+arr[i];
arr[i-gap] = temp-arr[i-gap];
arr[i] = temp-arr[i-gap];
i -= gap;
}
}
gap = gap/2;
}
System.out.println(Arrays.toString(arr));
}
}