算法 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]

源代码:

#include<iostream>#include<cstring>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;}

运算结果:

836 25 48 12 65 43 20 5812 20 25 36 43 48 58 65


你若喜欢,点个在看 

以上是关于算法 class09 排序算法-插入排序的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

7种基本排序算法的Java实现

七大排序算法之插入排序

七大排序算法之希尔排序

九大排序算法(C语言)

九大排序算法(C语言)