一、数据结构与算法:
1.1、创建 希尔(Shell)排序方法:
public static void shellShiftShot(int[] arr){
for (int gap = arr.length /2; gap > 0; gap/=2) {
for (int i = gap; i < arr.length; i++) {
int value = arr[i];
int index = i;
while(index-gap >= 0) {
if (arr[index - gap] > value) {
arr[index] = arr[index - gap];
}else{
break;
}
index -= gap;
}
arr[index] = value;
}
}
}
1.2、上述代码 所增加的优化元素:
while(index - gap >= 0) {
if (arr[index - gap] > value) {
arr[index] = arr[index - gap]; //使用了 移位式,相较交换式进行了优化
}else{
break; // 移位终止
}
index -= gap;
}
1.3、main 方法:
public static void main(String[] args) {
//随机创建8万 个数据
int arr[]= new int[80000];
for(int i=0; i<arr.length; i++){
arr[i] = (int)(Math.random()*80000);
}
//计算 冒泡排序时间
double start = System.currentTimeMillis();
System.out.println("计时开始:");
shellShiftShot(arr);//此处写要测试的代码
double end = System.currentTimeMillis();
System.out.println("计时结束, 共耗时:"+ (double)((end-start)/1000) +"秒");
}
• 由 ChiKong_Tam 写于 2020 年 9 月 10 日