插入排序算法
插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止。
算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是
1 + 2 + 3 + …… + N = O(N ^ 2)的复杂度。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream>
2
3 using namespace std;
4
5 void insertSort(int a[],int n)
6 {
7 int j,i,key;
8 for(i = 1;i < n;i++)
9 {
10 key = a[i];
11 //把i之前大于a[i]的数向前移动
12 for(j = i-1;j >= 0&&a[j]>key;j--)
13 a[j+1] = a[j];
14 //在合适的位置放置当前元素
15 a[j+1] = key;
16 }
17 }
18 int main(int argc,char **argv)
19 {
20 int a[] = {2,4,6,3,7,9,2,0};
21 insertSort(a,8);
22 for(int i = 0;i < 8;i++)
23 cout<<a[i]<<" ";
24 cout<<endl;
25 return 0;
26 }