不得不说的插入排序、实例及详细解说

       很多人都玩过扑克牌,那么我们在将扑克牌正确插入到它在牌中的正确位置的过程就是一个插入排序的插入过程,两者的原理是一模一样的,就是待插入的牌(前面的牌是已经整理好的)和它前面的牌比较,如果前一张牌比它小或相等,则就放在该位置上,如果比它大,则往前挪一张牌,此时它的位置是刚才前一张牌的位置,这时在和前一张牌比,如果还是比它大,则继续往前移动,直到它的前一张牌比它小或等于它为止。同样按从大到小排也是一样的道理。

       下面来看一个C语言版本的实例:

#include "stdio.h"
#include "conio.h"
#define N  23   //N代表数组长度,C语言没有length属性,只能人为地宏定义一个参数?
void insert_sort(int A[])
{
    //假设0号元素是不用比的?
    int i=0,j,temp;
    for(i=1;i<N;i++)
    {   j=i;
        while(A[j]<A[j-1])
        {
           temp=A[j];
           A[j]=A[j-1];
           A[j-1]=temp;
           j--;
           if(j==0){ break;}
        }
    }
}
main()
{   /*0号元素没有参加排序,但必须有*/
    int a[N]={11,5,4,3,9,2,8,5,6,7,54,67,44,34,32,12,14,38,21,24,25,78,20},i;
    insert_sort(a);
    printf("insert_sort_array is already now\n");
    for(i=0;i<N;i++) /*0号元素是自行添加,不需要输出*/
        printf(" %d ",a[i]);
    getch();
}


阅读更多
个人分类: 算法+数据结构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

不得不说的插入排序、实例及详细解说

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭