0%

排序-希尔排序

以下是希尔排序的Java代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Arrays;

public class ShellSort {

public static void shellSort(int[] arr) {
int n = arr.length;

// 初始步长设定为数组长度的一半,逐渐减小步长
for (int gap = n / 2; gap > 0; gap /= 2) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j;

// 在当前步长下,使用插入排序对子数组进行排序
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}

arr[j] = temp;
}
}
}

public static void main(String[] args) {
int[] arr = {12, 34, 54, 2, 3};
System.out.println("Original array: " + Arrays.toString(arr));

shellSort(arr);

System.out.println("Sorted array: " + Arrays.toString(arr));
}
}

在这个示例中,shellSort 方法使用希尔排序算法对整数数组进行排序。希尔排序是一种插入排序的改进版本,它通过逐步缩小步长,将较大的元素尽快移到正确的位置,从而提高了插入排序的效率。

这只是一个基本的希尔排序示例,实际应用中可能需要考虑不同的步长序列和性能优化。希尔排序的步长序列选择会影响算法的性能。