希尔排序是一种不稳定的排序方法,基本思想:
- 将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对...
- 将每对数据进行比较和交换,排好序
- 然后分成n/4个数组序列,再次排序
- 不断重复以上过程,直至整个数组排序完成
package SortRank; /** * 希尔排序:也称缩小增量排序(当gap=1时,就是直接插入排序了) * @author 18322 * */ public class ShellSort { public static void main(String[] args) { int arr[] = {5, 9, 4, 10, 2, 8, 7, 11, 23, 12, 82, 32, 8, 2}; System.out.println("数组排序前的顺序:"); printArray(arr); sort(arr); System.out.println("数组最终排序的顺序:"); printArray(arr); } private static void printArray(int arr[]) { for(int in : arr) { System.out.print(in + "\t"); } System.out.println(); } private static void sort(int arr[]) { int gap = arr.length /2; int count = 1; while(gap > 0) { //gap控制步长 for(int i = gap; i < arr.length; i++) { //i循环是什么意思 int j = i; while(j >= gap && arr[j-gap] > arr[j]) { //j-gap表示什么意思 int temp = arr[j]; arr[j] = arr[j-gap]; arr[j-gap] = temp; j -= gap; } } System.out.println("第" + count + "次数组排序的顺序:"); printArray(arr); gap = gap / 2; count += 1; } } }