簡介:
插入排序(insertion sort)是一種簡單直觀且穩定的排序演算法。基本思想是:每一趟將乙個待排序的記錄,按其關鍵字的大小插入到已經排好序的一組記錄的適當位置上,直到所有待排序記錄全部插入為止。
圖示:
類似玩撲克牌遊戲時,按序排列紙牌。
**示例:
#include
using namespace std;
void
insert_sort
(int
*ars,
int n)
ars[j+1]
= ars[i];}
}}intmain()
思路分析:
單一數值必然有序,因此我們選擇從第二個數值開始比較。如果待比較數值比前乙個數值大,則說明序列仍然有序,這時我們向後繼續比較。當遇到小於情況時,則需要在已排好序的序列中,找到合適位置將其放入。
**從後向前遍歷已排序序列,遍歷的過程主要是為了找到合適的插入位置,但是這裡不是採用鍊錶,因此插入之前需要後移元素。
時間複雜度分析:
不難驗證,當輸入序列有序時,該演算法的時間複雜度為o(1)。但是當最壞情況下,查詢和插入操作將線性遞增,累計需要o(n^2)。
排序演算法 直接插入
直接插入排序基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1.i 1 中,生成含n個記錄的有序區。通過下面乙個排序的例子,來幫助我們理解直接插入排序的思想。我們假設下面無序的序列開頭...
直接插入排序演算法
直接插入演算法 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序演算法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複...
直接插入排序演算法
撲克牌是我們幾乎每個人都可能從事過的遊戲。而最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9 5 1。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢?應該說,哪怕你是第一次玩撲克牌,只要認識這些數字,理牌的方法都是不用教的。將...