1.時間複雜度 n^2,但是少量資料的情況下比歸併排序要好,因為歸併排序的常數因子很大!
2.原址排序
void insert_sort(int date, int n) }}
思想:設想一下,桌子上有一堆揹著的牌(類似於乙個等待排序的陣列),然後呢,你開始拿到第一張牌並置入你的左手,你要記住,你的左手中的牌永遠都是有順序的(公升或降序),你的右手
拿起要插入的牌(這就是上面的key=date[j]).下面當你右手拿起一張待插入的牌時,怎麼進行你的左手手牌中?因為你左手中的手牌已經有順序的(假設為公升序),兩種情況:
再設乙個約定:約定右手中的牌在進入左手中的牌時,是從右到左的順序進行的(畢竟這樣比較符合我們的動作-。-)
1)右手的牌比左手中的牌的最靠右邊的牌要大,那麼直接把右手的牌放入即可date[j];
插入排序實現
插入排序 public class insertionsort for int i arr 思路 外層迴圈用來從無序區域中取值,起始位置是下標1,把下標0到下標0當作已經有序的區域,把要取的值用臨時變數val存起來,如果這個值正好應該排在有序區域的最後,那麼插入位置就是它原來的下標,如果這個值比有序...
排序 插入排序的實現
插入排序類似於我們玩撲克牌,如果想要讓我們手中的牌有序,那麼當我們從牌堆中抽出一張牌放入自己手中的牌組內時,需要把這張牌和手中最大的牌開始向前比較,直到找到乙個大於前面的牌小於後面一張牌的情況下插入即可。在網上看到此 特別能說明插入排序的思想,因此把它放在這裡。插入排序的實現我們可以先從單趟排序入手...
插入排序之折半插入排序(c 實現)
插入排序有直接插入排序,折半插入排序 又叫二分插入排序 鍊錶插入排序,希爾排序等。在排序中屬於穩定排序型別。折半插入排序的演算法思想 1 計算 0 i 1 的中間點,用 i 索引處的元素與中間值進行比較,如果 i 索引處的元素大,說明要插入的這個元素應該在中間值和剛加入i索引之間,反之,就是在剛開始...