java:希尔排序

import java.util.Arrays;
import java.util.Iterator;

public class testshellsort {
public static void main(String[] args) {
int[] arr = { 120, 34, 56, 7, 8834, 34456, 667788, 0, 23, 12 };
shellsort(arr);
System.out.println("排序后结果为:" + Arrays.toString(arr));
}

public static void shellsort(int[] arr) {
int k = 1;
// 遍历所有步长,
for (int d = arr.length / 2; d > 0; d /= 2) {
// 遍历所有元素
for (int i = d; i < arr.length; i++) {
// 遍历本组中所有元素,进行交换
// j-=d(一个直接插入排序,和本组后面的数字比较之后依次和前面的数字进行比较
for (int j = i - d; j >= 0; j -= d) {
// 如果当前元素大于加上步长的元素
if (arr[j] > arr[j + d]) {
int temp = arr[j];
arr[j] = arr[j + d];
arr[j + d] = temp;
}
}
}
System.out.println("第" + k + "次排序的结果为:" + Arrays.toString(arr));
k++;
}

}
}

原文地址:https://www.cnblogs.com/oycq9999/p/10240739.html