Java 希尔排序 示例
时间: 2023-03-14 20:10:16 浏览: 120
希尔排序(Shell Sort)是一种插入排序算法,它先将一定范围的数据按照一定的步长进行分组,然后对每组数据进行插入排序,最后将步长缩小,重复上述操作,最终达到完全有序的状态。下面是一个简单的Java实现希尔排序的示例代码。public class ShellSort {
public static void sort(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 && temp < arr[j - gap]; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}
}
相关问题
Java生成希尔排序代码
以下是 Java 生成希尔排序代码的示例:
```
public class ShellSort {
public static void sort(int[] arr) {
int n = arr.length;
for (int gap = n / 2; gap > ; gap /= 2) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j = i;
while (j >= gap && arr[j - gap] > temp) {
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
}
}
}
```
这段代码可以对一个整数数组进行希尔排序,时间复杂度为 O(nlogn)。
java 实现希尔排序算法
以下是Java实现希尔排序算法的示例代码:
```java
public class ShellSort {
public static void sort(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 = i;
while (j >= gap && arr[j - gap] > temp) {
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
}
}
}
```
在这个示例中,我们首先定义了一个`sort`方法,该方法接受一个整数数组作为参数,并使用希尔排序算法对其进行排序。在`sort`方法中,我们首先获取数组的长度`n`,然后使用一个循环来遍历所有的增量`gap`,初始值为`n/2`,每次循环都将`gap`除以2,直到`gap`为0为止。在每次循环中,我们使用另一个循环来遍历从`gap`开始的所有元素,并将其插入到正确的位置。具体来说,我们首先将当前元素的值存储在一个临时变量`temp`中,然后使用一个`while`循环来将比当前元素大的元素向右移动,直到找到正确的位置。最后,我们将当前元素插入到正确的位置。
阅读全文