直接插入
考研須知
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;
}