算法 class09 排序算法-插入排序
Posted 计算机算法与模型
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 class09 排序算法-插入排序相关的知识,希望对你有一定的参考价值。
插入排序的思想:
回忆一下打牌时抓牌的情景,为了方便打牌,打牌时一般是一边抓牌一边排序,当抓完所有的牌的时候,手中的牌便是有序的了,这种排序方法叫做插入排序法。
例如:设n=8,数组a中的8个元素是:36,25,48,12,65,43,20,58,执行插入排序程序后,其数据变动的情况如下
第0步:[36] 25 48 12 65 43 20 58
第1步:[25 36] 48 12 65 43 20 58
第2步:[25 36 48] 12 65 43 20 58
第3步:[12 25 36 48] 65 43 20 58
第4步:[12 25 36 48 65] 43 20 58
第5步:[12 25 36 43 48 65] 20 58
第6步:[12 20 25 36 43 48 65] 58
第7步:[12 20 25 36 43 48 58 65]
源代码:
using namespace std;
/**
*题目:排序算法-插入排序
*/
void mvdata(int a[],int j,int i){
for(int k=i;k>=j;k--){
a[k]=a[k-1];
}
}
int main(){
int n;
cin>>n;
int a[n];
memset(a,0,n);
for(int i=0;i<n;i++){
cin >> a[i];
}
int tmp=0;
for(int i=0;i<n;i++){
tmp=a[i];
for(int j=0;j<i;j++){
if(tmp<a[j]){
mvdata(a,j,i);
a[j]=tmp;
break;
}
}
}
for(int i=0;i<n;i++){
cout << a[i]<<" ";
}
cout <<endl;
return 0;
}
运算结果:
8
36 25 48 12 65 43 20 58
12 20 25 36 43 48 58 65
你若喜欢,点个在看
以上是关于算法 class09 排序算法-插入排序的主要内容,如果未能解决你的问题,请参考以下文章