java算法----排序----(6)希尔排序(最小增量排序)
1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 10 public static void main(String[] args) { 11 // 需要排序的数组 12 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; 13 double d1 = arr.length; 14 int temp = 0; 15 // 循环输出该数组内容 16 System.out.println("排序之前:"); 17 for (int a : arr) { 18 System.out.print(a + "\t"); 19 } 20 System.out.println(); 21 22 while (true) { 23 d1 = Math.ceil(d1 / 2) % 2 == 0 ? Math.floor(d1 / 2) : Math.ceil(d1 / 2); 24 int d = (int) d1; 25 for (int x = 0; x < d; x++) { 26 for (int i = x + d; i < arr.length; i += d) { 27 int j = i - d; 28 temp = arr[i]; 29 for (; j >= 0 && temp < arr[j]; j -= d) { 30 arr[j + d] = arr[j]; 31 } 32 arr[j + d] = temp; 33 } 34 } 35 if (d == 1) { 36 break; 37 } 38 39 } 40 41 // 循环输出该数组内容 42 System.out.println("排序之后:"); 43 for (int a : arr) { 44 System.out.print(a + "\t"); 45 } 46 System.out.println(); 47 48 } 49 50 }
llh