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






























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