插入排序原理:将第i个元素与前i-1个元素从右向左开始比较,若第i个元素小,则将前面的元素向后移,直到找到可以插入的位置。
插入排序
1 #include <iostream>
2 using namespace std;
3
4
5 //元素交换
6 void swap(int &a,int &b)
7 {
8 int temp=a;
9 a=b;
10 b=temp;
11 }
12
13 /*///////////////////////////////////////////////
14 插入排序
15 */
16 void InsertSort(int *a,int len)
17 {
18 int i,j,key;
19 for(i=1;i<len;i++)
20 {
21 key=a[i]; //保存a[i]的值,因为后面要修改它的值
22 j=i-1;
23 while(j>=0 && a[j]>key )
24 {
25 if(a[j]>key)
26 {
27 a[j+1]=a[j];
28 j--;
29 }
30 }
31 a[j+1]=key;
32 }
33 for(i=0;i<len;i++)
34 cout<<a[i]<<" ";
35 cout<<endl;
36 }
37 /////////////////////////////////////////////////
38
39
40
41
42 int main()
43 {
44 int n,i,a[20];
45 cout<<"请输入数组元素n:"<<endl;
46 cin>>n;
47 cout<<"请输入"<<n<<"个元素:"<<endl;
48 for(i=0;i<n;i++)
49 cin>>a[i];
50 InsertSort(a,n);
51 return 0;
52 }
比较次数为1+2+3+...+n=(1+n)*n/2,因此时间复杂度也是O(n^2)