插入排序 C 實現

2021-07-08 14:37:56 字數 623 閱讀 9300

寫給自己!!

插入排序演算法,其如同打牌,手裡總是已經排好續的牌,而桌面上的是未知牌,其思想是:拿起一張牌,與手中的牌從右到左(從大到小)進行比較,找到合適的位置插入即可。插入排序演算法沒有合併排序算好效率高,他隨著輸入的增大而增大。

**思想:對於將要插入的第j個元素,與已經排序好的0…j-1個元素從j-1處開始比較,如果j-1比j的元素大,則將j-1處的元素往後移乙個位置,依次比較,找到j的元素合適的位置,插入即可。**如下:

void insert::insertsort(vector

& coll)

coll[i+1]=key;

}for(auto pos=coll.begin();pos!=coll.end();++pos)

}

coll為待排序,插入排序是一種原地排序演算法。先把第j個元素取出來給乙個臨時變數,這樣一直向後移的時候就會出現乙個空位置,例如把j-1的元素移到j處,就空了乙個j-1的位置,其實實際上是有值的,此時coll[j-1]=coll[j],若此時while條件不成立時,把key賦值給coll[j-1]即可。

這裡是兩層迴圈,外層迴圈是對待排序的陣列的每乙個元素進行遍歷,內層迴圈是對已經排序好的元素中找到即將要插入的元素的位置。

C 實現插入排序

感謝morewindows的文章,造福我等學渣啊 複雜度應該也是o n 2 using system using system.collections.generic using system.linq using system.text namespace 排序 if j i 1 將待插入的a i...

插入排序C 實現

演算法描述 從陣列第二個元素開始向後掃瞄,將每個元素插到它前面所有元素的合適位置。下面給出整數陣列的實現,對於其他複雜型別只需實現相應的自定義比較函式即可 include include using namespace std const int num 20 void exch int s,int...

插入排序 C 實現

插入排序的基本思想是每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。常見的插入排序有插入排序 insertion sort 希爾排序 shell sort 二叉查詢樹排序 tree sort 圖書館排序 library sort patien...