插入排序思路與泛型版本的實(shí)現(xiàn)
假定這個(gè)數(shù)組的序是排好的,然后從頭往后,如果有數(shù)比當(dāng)前外層元素的值大,則將這個(gè)數(shù)的位置往后挪,直到當(dāng)前外層元素的值大于或者等于它前面的位置為止。
二.插入排序算法實(shí)例
用五個(gè)名字(Monroe,Chin,Flores,Stein和Dare)的列表的插入排序算法為例:
Monroe 從Monroe開始
處理名字Chin Chine Monroe 將Chin插入到位置0;Monroe移動(dòng)至位置1
處理名字Flores Chine Flores Monroe 將Flores插入到位置1;Monroe移動(dòng)至位置2
處理名字Stein Chine Flores Monroe Stein Stein位置正確
處理名字Dare Chine Dare Flores Monroe Stein 將Dare插入在位置1;列表尾部向右移動(dòng)
三.插入排序算法的實(shí)現(xiàn)






























四.插入排序算法的效率
假定n是數(shù)組的長(zhǎng)度,那么插入排序需要n-1遍。對(duì)于通用的遍i來(lái)說(shuō),插入操作從arr[0]到arr[i-1]的子列表中,并且需要平均i/2次比較。比較的平均總數(shù)為:
T(n) = 1/2 + 2/2 + 3/2 + ...... + (n-2)/2 + (n-1)/2 = n(n-1)/4
根據(jù)T(n)的主項(xiàng),插入排序算法的平均運(yùn)行時(shí)間為O(n2)。最好情況為O(n),最壞情況為O(n2)。
posted on 2008-06-11 23:56 Brian 閱讀(2709) 評(píng)論(4) 編輯 收藏 所屬分類: 數(shù)據(jù)結(jié)構(gòu)與算法