直接插入排序的比較次數、移動次數和賦值次數 最小/最大/平均值
基於該程序:
比較次數:指的是while循環的移動次數
移動次數:指的是數據在向量(一維數組)中的移動次數,包括R[0]<-R[i],R[j+1]<-R[0]和while循環中的R[j+1]<-R[j]
賦值次數:包括所有的賦值語句
關於比較次數與賦值次數的關系:
對於while循環,程序比較t次后退出循環,移動t-1次,賦值2t-2次,因為前面t-1個while循環執行,第t次while循環不執行。
對於for循環,每次程序額外移動2次,賦值3次。
所以每個for循環比較t次,移動t+1[(t-1)+2]次,賦值2t+1次[(2t-2)+3]。
I.平均比較次數與賦值次數
對於把第i(i=2,3,…,n)個數放入相應的位置,
程序在第j個位置退出while循環,a[i]放入a[j+1]處,
j 等於 i-1 ~ 0的概率都相同(一個數在一個序列中的位置的所有可能性的概率都相等)
所以
II.最小比較次數與賦值次數
最小值為while循環第一次直接退出的情況,比較次數為1次。
III.最大比較次數與賦值次數
最大值為當j=0時退出while循環的情況,比較次數為i次。
總結:
比價次數:
移動次數:
賦值次數:
然后我也不知道我對概念的理解和計算的理解對不對。。。
不過我覺得: