/*
插入排序
i从第二个数开始,并与其前面的数字进行比较,找到第一个比其大的数,并记录其位置t;
然后把位置t到位置i-1的数后移一位,然后将原本第i位置上的数放在第t位置上
如 4 9 43 3 5 44 94 8
先9与4比较 9>4是有序的,不需要做任何操作;
43依次与4,9比较 43>4,43>9是有序的,不需要做任何操作;
3与4比较 3<4, 将4 9 43后移一位,然后把3放在4的位置,数组变为3 4 9 43 44 94 8
44依次与3 ,4,9 ,43比较44>3,44>4, 44>9,44>43是有序的,不需要做任何操作;
94依次与3 ,4,9 ,43 ,44比较94>3,94>4, 94>9,94>43 ,94>44是有序的,不需要做任何操作;
8依次与3 ,4,9 比较,8<9,将3 4后移一位,然后把8放在9的位置,数组变为3 4 8 9 43 44 94
*/
#include<iostream>
using namespace std;
int main(){
int insertsort[8]={4,9 ,43,3,5,44,94,8};
int t,tt; //t用于记录比第i个位置上大的数位置;由于 insertsort[i]可能被覆盖,用tt保存
for(int i=1;i<8;i++){
tt= insertsort[i];
t=i;
for(int k=0;k<i;k++){
if(tt< insertsort[k]){
t=k; //找到比第i个位置上的数要大的数
break;
}
}
for(int j=i-1;j>=t;j--){
insertsort[j+1]= insertsort[j]; //把第t到i-1位置上的数进行后移一位
}
insertsort[t]=tt; //把原本 insertsort[i]上的数放在t位置上
}
for(int i=0;i<8;i++){
cout<< insertsort[i]<<" ";
}
cout<<endl;
return 0;
}