直接插入排序
在p[1…i-1]中查找p[i]的插入位置,p[i-1]<=p[i]就结束
- 将P[i]放到监视哨p[0]处,让P[i-1]后移;
- 将从i-2初开始判断如果大于插入记录,则后移
- 将监视哨上的记录插入到适当的位置。
代码如下:
//直接插入排序
#include<bits/stdc++.h>
using namespace std;
#define m 1000
void crpx(int p[],int x){
int j=0;
for(int i=2;i<=x;++i){
if(p[i-1]>p[i]){
p[0]=p[i];
p[i]=p[i-1];
for(j=i-2;p[0]<p[j];--j){
p[j+1]=p[j];
}
p[j+1]=p[0];
}
}
}
int main(){
int i=0,p[m+1]={2,5,3,1,4,9,6,7,8};
int x=9;
crpx(p,x);
for(i=2;i<=x;i++){
cout<<p[i]<<endl;
}
return 0;
}
小菜鸟的见解,新手可看,大佬请绕行!!!