1、直接插入排序演算法思想:
把n個待排序的元素看出乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無序表含有n-1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排序過程。(增量法)
把a[i]插入到a[0]、a[1]、......a[i-1]中的具體實施過程:
先把a[i]賦值給變數tmp,然後將tmp依次與a[i-1]、a[i-2]......進行比較,將比tmp大元素右移乙個位置,直到發現某個j(0<=j<=i-1),使得a[j]<=tmp或j為-1,把tmp賦值給a[j+1]。
2、直接插入排序過程演示:
圖一:直接插入排序 例項過程演示
3、直接插入排序演算法c語言實現:
#include void insertsort(int *arr,int len)
else
}arr[j+1] = tmp; }}
void show(int *arr,int len)
{ for(int i=0;i執行結果:
4、總結
1)時間複雜度o(n^2),空間複雜度o(1)。
2)一種穩定型排序演算法。
3)適用於n值較小的情況,越有序,排序越快,當原陣列為順序時,時間複雜度為o(n).
資料結構 插入排序 直接插入排序
有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o n 2 是...
資料結構 插入排序(直接插入排序 折半插入排序)
二 插入排序 1.直接插入排序 這裡我們注意,元素的選擇是從第二個元素開始!動態過程如下 遞增的 實現 include using namespace std void insertsort int a,int len 若小於前乙個元素,則繼續向前走,前乙個元素後移 演算法分析 優點 簡單,穩定。總...
排序 一 直接插入排序
1 直接插入排序 1 定義 直接插入排序 straight insertion sort 是一種最簡單的排序方法。它的基本操作是將乙個記錄插入到乙個長度為m 假設 的有序表中,使之仍保持有序,從而得到乙個新的長度為m 1 的有序表。2 演算法思路 設有一組關鍵字 k 1 k 2 k n 排序開始就認...