插入排序的優化,比較插入同步進行

2022-03-15 20:37:31 字數 997 閱讀 9061

插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料,從而得到乙個新的、個數加一的有序資料

演算法適用於少量資料的排序,時間複雜度為o(n^2)。是穩定的排序方法。 

網上找到的程式多是先比較找到插入的位置,再移動位置。還有文章說將查詢位置的過程用二分法進行優化,其實根本沒用,可以將比較插入同步進行,比較查詢的同時移動位置,效率高得多。

經測試,5000個隨機數,本法比傳統方法快3倍,難以置信。

1

sub insertsortn(lngarr() as

long

, _2

optional lb as

long, optional ub as

long = -9, optional descending as

long)3

dim i as

long, j as

long, k as

long

4dim tmp as

long, ltmp as

long56

if ub = -9

then ub = ubound(lngarr): lb = lbound

(lngarr)78

for i = 1

toub

9 tmp =lngarr(i):

10for j = i - 1to0

step -1

'比較插入數字和挪位一起進行

11if (descending = 0

and tmp >= lngarr(j)) or (descending = 1

and tmp <= lngarr(j)) then

exit

for12 lngarr(j + 1) =lngarr(j):

13next

j14 lngarr(j + 1) =tmp:

15nexti16

end sub

插入排序的優化,比較插入同步進行

插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料,從而得到乙個新的 個數加一的有序資料 演算法適用於少量資料的排序,時間複雜度為o n 2 是穩定的排序方法。網上找到的程式多是先比較找到插入的位置,再移動位置。還有文章說將查詢位置的過程用二分法進行優化,其實根本沒有,可以將比較插入同步進行...

插入排序優化

插入排序的是十分常見的o n 2 級別的排序演算法,其排序思路如下 一次迴圈使前n個數都為有序,巢狀的二次迴圈將第n個數插入到前n個數中合適的位置,我的實現 如下 public void insertsort int a,int n else 這個插入排序相對於選擇排序有可以提前結束一層迴圈的特點,...

R 中同步進行的多組比較的包 npmc

方差檢驗可以評估組間的差異。依據檢驗的結果,雖然你可以拒絕不存在差異的原假設,但方差檢驗並沒有告訴你哪些組顯著地與其他組有不同。robert 在 r in action 一書中推薦了乙個包 npmc 該包提供了一種非引數多組比較程式。在控制犯第一類錯誤的概率 發現乙個事實上並不存在的差異的概率 的前...