插入排序

来源:互联网 发布:mac word 繁简转换 编辑:程序博客网 时间:2024/06/04 01:10

#include<iostream>using namespace std;void Insort_sort(int arry[],int n){int i,j,key;for(j=1;j<n;j++){i=j-1;key=arry[j];while(i>=0&&arry[i]>key)//找到arry[j]要插入的位置{arry[i+1]=arry[i];i--;}arry[i+1]=key;}}int main(){int n,*arry;cin>>n;arry=new int[n];for(int i=0;i<n;i++)cin>>arry[i];Insort_sort(arry,n);for(i=0;i<n;i++)cout<<arry[i]<<' ';cout<<endl;return 0;}

最好情况下数组刚好有序,不用进入while循环,时间复杂度为O(n)。

最坏情况下数组逆序,while循环要循环到I=0,此时时间复杂度为O(n^2)

空间复杂度为O(1),是稳定的排序。