時間複雜度:o(n²)
穩定性:穩定
排序原理:
插入排序適合資料已大致有序了的場合
假定乙個初始有序數列(初始設定首元素為有序數列),後邊的元素都是待插入資料,一次插入乙個,
在有序數列中找待插入資料的位置,然後在將該位置後的有序資料後移,空出位置,然後插入。
以此類推直到所有資料插入完成。
適用場景:
資料相對有序、演算法時間要求低穩定性好的場景中,插排是乙個比較好的選擇
引數: data 排序資料
lenth 資料量
direction 排序方向 從大到小/從小到大
void
insertsort
(int
* data,
int lenth,
int direction)
} index = data[j]
;//將待插入資料拷貝出來等待 下面資料後移時會覆蓋該資料
if(i != j -1)
//不是有序資料末尾
data[i +1]
= index;}}
}
C語言實現插入排序
插入排序 我在學習一些簡單的演算法,我用文字記錄我的進步。插入排序 其實就是在待排序列中找到,沒有排序好的元素,插入的適當的位置,本文以公升序為例,簡單的講解一下。直接看下面的 include stdio.h include stdlib.h include string.h void swap i...
C語言實現插入排序
插入排序是排序演算法的一種,它不改變原有的序列 陣列 而是建立乙個新的序列,在新序列上進行操作。這裡以從小到大排序為例進行講解。插入排序的基本思想是,將元素逐個新增到已經排序好的陣列中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好的陣列是仍然有序的。在實際使用中,通常是排序整個無序陣列,所...
插入排序(C 語言實現)
插入排序分為直接插入排序和折半插入排序,直接插入排序利用遍歷的方式查詢插入位置,時間複雜度為n 2,直接插入法由於不會改變相同元素的相對順序,所以直接插入排序是一種穩定的排序演算法。折半插入排序 二分插入排序 折半插入利用二分法查詢插入位置,只是減少了查詢比較的操作,所以其時間複雜度仍為n 2,二分...