直接插入排序
直接插入排序:通过构建有序序列,对于未排序数据,选出第一个元素,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序因而在从后向前扫描过程中,
需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
我们可以吧一个序列分为有序区段和无序区段,如图:
#include<bits/stdc++.h> using namespace std; int a[105]; int n; //从0开始 ,结果为升序的算法 void insert_sort(int a[],int n) { int i,j,temp; j=0; for(i=1;i<n;i++) { temp=a[i]; j=i-1; while(j>=0&&temp<a[j]) //在有序序列里从后往前扫描依次比较 { a[j+1]=a[j]; //若比当前值小,有序序列空出一个空间,最后一个元素后移 j--; } a[j+1]=temp; //将无序序列中的元素插入到有序序列中 } } int main() //输出测试 { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); insert_sort(a,n); for(int i=0;i<n;i++) { printf("%d",a[i]); if(i!=n-1) printf("-"); else printf("\n"); } }
相关推荐
wulaxiaohei 2020-04-22
shawsun 2020-02-12
yishujixiaoxiao 2019-12-23
TTdreamloong 2012-11-06
微分 2015-01-08
gotea 2012-08-30
sxyyu 2019-07-01
算法的天空 2019-07-01
horizonheart 2013-03-15
tingke 2018-01-15
yhguo00 2018-04-29
tingke 2017-02-28
龙源潇俊 2015-07-18
tansuo 2014-12-12
xiekch 2011-04-12
PHP100 2019-03-28
BitTigerio 2018-04-21