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

2021-07-06 06:18:44 字數 887 閱讀 8305

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

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

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

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

'比較插入數字和挪位一起進行,無需二分法

sub insertsortn(lngarr() as long, _

optional lb as long, optional ub as long = -9, optional descending as long)

dim i as long, j as long, k as long

dim tmp as long, ltmp as long

if ub = -9 then ub = ubound(lngarr): lb = lbound(lngarr)

for i = 1 to ub

tmp = lngarr(i):

for j = i - 1 to 0 step -1 ' 比較插入數字和挪位一起進行

if (descending = 0 and tmp >= lngarr(j)) or (descending = 1 and tmp <= lngarr(j)) then exit for

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

next j

lngarr(j + 1) = tmp:

next i

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 該包提供了一種非引數多組比較程式。在控制犯第一類錯誤的概率 發現乙個事實上並不存在的差異的概率 的前...