package Sort;
import java.util.Arrays;
public class ShellSort {
public static void main(String[] args) {
int[] list = {3, 9, -1, 10, 20};
System.out.println(Arrays.toString(list));
shell2(list);
System.out.println(Arrays.toString(list));
}
// 希尔排序 交换式
public static void shell1(int[] list) {
int count = 0;
for (int i = list.length / 2; i > 0; i /= 2) {
for (int j = i; j < list.length; j++) {
for (int k = j - i; k >= 0 ; k -= i) {
if (list[k] > list[k + i]) {
int temp = list[k];
list[k] = list[k + i];
list[k + i] = temp;
}
}
}
count++;
System.out.printf("希尔排序第%d轮", count);
System.out.println();
System.out.println(Arrays.toString(list));
}
}
// 对交换式的希尔排序进行优化 -》 移位法
public static void shell2(int[] list) {
for (int i = list.length / 2; i > 0; i /= 2) {
for (int j = i; j < list.length; j++) {
int insertvalue = list[j];
int insertindex = j;
if (list[j] < list[j - i]) {
while (insertindex - i >= 0 && insertvalue < list[insertindex - i]) {
list[insertindex] = list[insertindex - i];
insertindex -= i;
}
list[insertindex] = insertvalue;
}
}
}
}
}
希尔排序 交换式和移位式
最新推荐文章于 2024-07-27 13:31:57 发布