插入排序

来源:互联网 发布:gson 源码 编辑:程序博客网 时间:2024/06/05 19:57
思路:
把第一个元素看作是有序的,从第二个元素起,每次都从右向左地与前面的元素比较;
如果该小于前面的某个元素,则把大的元素往右移动;
直到该元素放在了正确的位置上。 (每次循环开始时都保证前面的元素是有序的)
复杂度:(要求升序排序) 
最好情况:比较n-1次
最坏情况:比较n(n-1)次,赋值操作n(n-1)+n-1 次

平均:O(n^2) 


#include<iostream>using namespace std;int a[1000];int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}a[0]=0;//设置观察哨 for(int i=2;i<=n;i++){int x=a[i];for(int j=i-1;j>=0;j--){if(x<a[j]) a[j+1]=a[j];else {a[j+1]=x;break;}}}for(int i=1;i<=n;i++) cout<<a[i]<<endl;} 


0 0
原创粉丝点击