//定义变量(算交换的次数)
private static int count = 0;
public static void main(String[] args) {
//定义一个含有三个数的数组
int[] array = new int[3];
System.out.println("排序之前结果为:");
//随机生成三个数
for (int i = 0; i < array.length; i++) {
array[i] =(int)(Math.random()*100);
}
//输出生成的三个数
System.out.println("初始数据");
for (int a = 0; a < array.length; a++) {
System.out.print(array[a] + "\t");
}
System.out.println("");
//调用run方法
run(array);
//输出交换的次数
System.out.println(count);
}
//run方法 传参数(main方法中定义的数组)
private static void run(int[] array) {
//循环数组 从第二个开始
for (int i = 1; i < array.length; i++) {
//当前的数值
int value = array[i];
//下标前移
int index = i - 1;
用while循环判断
while(index >= 0 && value < array[index]){
//前一个数赋值给后一个数
array[index+1] = array[index];
//下标前移
index --;
}
当前数赋值给后一个数
array[index+1] = value;
System.out.println("第"+i+"次排序结果");
//循环输出
for (int k = 0; k < array.length; k++) {
System.out.print(array[k] + "\t");
}
//交换次数+1
count++;
}
}
希尔算法
最新推荐文章于 2024-10-21 16:25:06 发布