package 希尔排序;
import java.util.Arrays;
public class ShellSortDome {
public static void main(String[] args) {
int[] arr={8,9,1,7,2,3,5,4,6,0};
shellSort2(arr);
}
//交换法
public static void shellSort1(int[] arr){
int count=0;
int temp=0;
//根据前面的逐步分析,使用循环处理
for (int gap=arr.length/2;gap>0;gap/=2){
for (int i=gap;i<arr.length;i++){
//遍历各组中所有的元素(共gap组
for (int j=i-gap;j>=0;j-=gap){
//如果当前元素大于加上步长的那个元素,就交换
if (arr[j]>arr[j+gap]){
temp=arr[j];
arr[j]=arr[j+gap];
arr[j+gap]=temp;
}
}
}
System.out.println("第"+(++count)+"次后的数组为:"+ Arrays.toString(arr));
}
System.out.println("希尔排序后的数组为:"+ Arrays.toString(arr));
}
//移位法
public static void shellSort2(int[] arr){
for (int gap=arr.length/2;gap>0;gap/=2){
for (int i=gap;i< arr.length;i++){
int j=i;
int temp=arr[j];
if (arr[j]<arr[j-gap]){
while (j-gap>=0 && temp<arr[j-gap]){
//移动
arr[j]=arr[j-gap];
j-=gap;
}
//当退出while后,就给temp找到插入的位置
arr[j]=temp;
}
}
}
System.out.println("希尔排序后的数组为:"+ Arrays.toString(arr));
}
}
希尔排序(shellSort)
于 2022-03-03 22:27:51 首次发布
本文档详细介绍了希尔排序的两种实现方法:基于交换的shellSort1和基于移位的shellSort2。通过实例展示了如何对整数数组进行排序,并提供了每一步的数组变化过程。适合学习排序算法和理解希尔排序的工作原理。
摘要由CSDN通过智能技术生成