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

本文通过一个生动的例子——扑克牌排序,介绍了插入排序的基本原理,并提供了一个C语言实现的实例。通过对数组元素进行逐个比较并调整位置的方式,实现了对数组的有效排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

       下面来看一个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();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值