插入排序

空间复杂度:O(1)

时间复杂度为O(N2)

升序排列

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void insertion_sort(int b[],int size)
 5 {
 6   for(int i = 1; i < size; ++i)    //从第二个元素开始,到最后一个元素截止 
 7   {
 8     for(int j = i; j > 0 && b[j-1] > b[j]; --j) //逐个移位 然后插入 
 9     {
10       int tmp = b[j];
11       b[j] = b[j-1];
12       b[j-1] = tmp;
13     }
14   }
15 }
16 
17 int main()
18 {
19   int a[] = {100, 23, 15, 7, 8}; //输入数组
20   int size = sizeof(a) / sizeof(int); //计算数组a的元素个数 
21   insertion_sort(a,size);
22   for(int i = 0; i < size; ++i)
23     cout << a[i] << " ";
24       cout << endl;
25 }

 降序排列

 1 #include <iostream>
 2 using namespace std;
 3 void insertion_sort(int b[],int size)
 4 {
 5     for(int i=1;i<size;i++)
 6     {
 7         for(int j=i;j>0&&b[j-1]<b[j];j--)
 8         {
 9             int tem=b[j];
10             b[j]=b[j-1];
11             b[j-1]=tem;
12         }
13     }
14  } 
15  int main ()
16  {
17      int a[]={150,1,2,3,4,5,6,7,8,9};
18      int size=sizeof(a)/sizeof(int);
19      insertion_sort(a,size);
20      for(int i=0;i<size;i++)
21          cout<<a[i]<<" ";
22      cout<<endl;
23  }

 

posted @ 2020-04-21 16:51  SjYu  阅读(152)  评论(0编辑  收藏  举报