直接插入
考研须知
1.直接插入实现简单,适用于待排序元素较少且基本有序的情况。在元素基本有序时,需要比较的次数和移动次数很少,因此在这种情况下使用直接插入最佳
2.稳定的排序方法
3.时间复杂度O(n2)
空间复杂度O(1).
#include<iostream>
using namespace std;
void PrintArray(int a[],int n);
int main(){
int a[]={17,46,42,87,58,9,50,38};
int t,i,j,n;
n=sizeof(a)/sizeof(a[0]);
cout<<"直接插入前:"<<endl;
PrintArray(a,n);
cout<<"直接插入后:"<<endl;
for(i=1;i<n;i++) //从第一个元素开始比较
{
t=a[i];
for(j=i-1;j>=0&&t<a[j];j--)
a[j+1]=a[j];
a[j+1]=t;
PrintArray(a,n) ;
}
}
void PrintArray(int a[],int n){
int i;
for(i=0;i<n;i++)
cout<<a[i]<<" ";//这块我本来写的是 “cout<<a[i]<<endl;” 造成了数组竖着而不是横着
cout<<endl;
}