Java大数据平台开发 学习笔记(10)—— 希尔(Shell)排序(优化版)

一、数据结构与算法:


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 日

猜你喜欢

转载自blog.csdn.net/qq_42209354/article/details/108507969