一種情況下插入排序比希爾排序要快

2021-09-06 13:31:50 字數 794 閱讀 7051

我們都知道希爾排序是插入排序的優化。

希爾排序會在進行插入排序前把數列分組,然後會根據需要把陣列內部的數字先進行順序排列,最終減少插入排序時移動元素的次數,達到優化的目的。

但是我這邊簡化了部分插入排序的**,結果在最後測試的時候,插入排序竟然會比希爾排序要快。這裡似乎是說希爾排序的**還能再繼續優化?或者還有別的原因?這裡我只能把該問題記錄了。希望能有大神能給我解答。下面貼出**。

//插入排序

public static int insertionsort(int a)

}return a;

}

//希爾排序

//這種是設哨兵的希爾排序,已經比不設哨兵的希爾排序移動次數要少,速度更快很多倍了,但是還是比

//上面的插入排序要慢。

public static int shellsort1(int data) else

}data[j] = temp;}}

return data;

}

//建立隨機數組的方法。

public static int random(int n , int begin , int end)

//建立指定長度的陣列

int nums = new int[n];

//為陣列賦值

for (int i = 0; i < n; i++)

return nums;

}

請神請神,我這邊後面確實沒時間研究這個,希望能有大神給我解答。

coding A D 希爾排序(插入排序一種)

1 希爾排序 shell sort 這個排序方法又稱為縮小增量排序,是1959年d l shell提出來的。該方法的基本思想是 設待排序元素序列有n個元素,首先取乙個整數increment 小於n 作為間隔將全部元素分為increment個子序列,所有距離為increment的元素放在同乙個子串行中...

一種插入排序實現

插入排序是一種較簡單的排序演算法。思想 它是由 n 1趟排序組成,對於p 1趟到p n 1趟,插入排序保證從位置0到位置p 1上的元素均已排好序了。時間複雜度 o n n 平均情況下時間複雜度也是o n n includeint insert sort int a,int n a j temp re...

複習一下插入排序和希爾排序

首先是插入排序 for i 1 i n i for j i 1 j 0 a j a j 1 j swap a j a j 1 如果完全按照插入排序的思維,先插入,再後推,程式語句塊會變得比較臃腫 這裡用多次swap的方法,可以讓項一步一步往前移動,語句塊就簡潔很多,效果和時間上是一樣的 然後是希爾排...