[排序] 希爾排序(Shell Sort)
/**
* 希爾排序
* @param data:等待排序整型陣列
*
* data = {89, 12, 65, 97, 61, 81, 27, 2, 61, 98}
* 排序結果:
* gap = 5: 81 12 2 61 61 89 27 65 97 98
* gap = 2: 2 12 27 61 61 65 81 89 97 98
* gap = 1: 2 12 27 61 61 65 81 89 97 98
*/
public void shellSort(int[] data) {
int temp, max = data.length;
int gap = max / 2;
while (gap > 0) {
for (int k = 0; k < gap; k++) {
for (int i = k + gap; i < max; i += gap) {
for (int j = i - gap; j >= k; j -= gap) {
if (data[j] > data[j+gap]) {
temp = data[j+gap];
data[j+gap] = data[j];
data[j] = temp;
} else
break;
}
}
}
System.out.print("gap = "+gap+": ");
for(int k=0;k<max;k++){
System.out.print(data[k]+" ");
}
System.out.println();
gap /= 2;
}
}