[排序] 希尔排序(Shell Sort)
2005-02-24 16:49
483 查看
/**
* 希尔排序
* @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;
}
}
* 希尔排序
* @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;
}
}
相关文章推荐
- 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)
- uva 10152 ShellSort 龟壳排序(希尔排序?)
- 排序_Shell_Sort(希尔排序)
- 【排序算法 】希尔排序 shell sort(插入类排序)
- 插入排序之希尔排序(Shell Sort)
- 排序--希尔排序的实现(shellsort)
- uva 10152 ShellSort 龟壳排序(希尔排序?)
- 希尔排序(shellsort)又叫增量递减排序(diminishing increment)
- PHP Array -- PHP 排序 -- 希尔排序(Shell Sort)
- 【DS】排序算法之希尔排序(Shell Sort)
- 排序_Shell_Sort(希尔排序)更正版
- 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)
- 无聊写排序之 ---- 希尔排序(ShellSort)
- 排序之希尔排序(Shell Sort)
- Java基础知识强化57:经典排序之希尔排序(ShellSort)
- 排序——希尔排序(Shell Sort)
- C++实现谢尔排序(希尔排序)(shell sort)
- 排序 —— 希尔排序(Shell sort)
- 【ShellSort】希尔排序
- 算法----希尔排序(shell sort)