插入排序

来源:互联网 发布:java apache 框架 编辑:程序博客网 时间:2024/06/08 03:21

举个例子:

0  1  2  3  4  5 

8  3  1  5  2  1//将a[0]看成已经排好序的,a[1]与a[0]作比较,若a[0]大于a[1]则交换,再把a[0]与a[1]看作排好序的跟下一个比较,以此类推

3  8  1  5  2  1

1  3  8  5  2  1

1  3  5  8  2  1

1  2  3  5  8  1

1  1  2  3  5 8  

1、将开头元素视作已排序

2、执行下述处理,直至未排序部分消失

      取出未排序部分的开头元素赋给变量V

      在已排序部分,将所有比v大的元素向后移一个单位

      将已取出的元素v插入空位

3、插入排序算法十分稳定

#include<stdio.h>int main(){    int n,a[100],i,j,v,z;    while(scanf("%d",&n))    {        for(i=0;i<n;i++)        {            scanf("%d",&a[i]);        }        for(i=1;i<n;i++)        {            v=a[i];            j=i-1;            while(j>=0&&a[j]>v)            {                a[j+1]=a[j];                j--;            }            a[j+1]=v;            for(z=0;z<n;z++)            {                if(z>0) printf(" ");                printf("%d",a[z]);            }            printf("\n");        }    }    return 0;}




原创粉丝点击