思路:將陣列分為兩個部分:前一部分為有序,後一部分為無序。將無序陣列元素向有序陣列中進行插入
設 j 為有序陣列的最後乙個元素;i為無序陣列的最後乙個元素。
穩定 時間複雜度 最好 o(n) 最壞 o(n^2) 平均 o(n^2)
使用場景:陣列中的元素離最終位置不遠的情況,而且數量盡量在 5-20之間比較合適。
#includeusingnamespace std;
void insertsort(int*arr,int len)
arr[j+1] = temp;
}}int main()
; int len = sizeof(arr)/sizeof(arr[0]);
insertsort(arr,len);
return 0;
}
排序演算法(3) 直接插入排序InsertSort
介紹 插入排序的工作原理是,對於每個未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。越有序越快 步驟 1.從第乙個元素開始,該元素可以認為已經被排序 2.取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 3.如果被掃瞄的元素 已排序 大於新元素,將該元素後移一位 4.重複步驟3,直到找...
插入排序演算法
插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...
演算法 插入排序
include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...