c语言实现插入排序

插入排序概念

插入排序是一种从序列左端开始依次对数据进行排序的算法。在排序过程中,左侧的数据陆续归位,而右侧留下的就是还未被排序的数据。插入排序的思路就是从右侧的未排序区域内取出一个数据,然后将它插入到已排序区域内合适的位置上。

思路演示

  1. 首先我有5 2 4 7 2 8这组数据(要升序排列)
  2. 首先让最左侧的5设为已排序完成的数字,而待排数字为[2,4,7,2,8],让2与5比较,若待排2小于5,则5向后移动,留出位置让2进入(像是交换两者之间的位置),现在序列为[2,5,4,7,2,8]
  3. 现在 以排序区的参考为5 未排数字为[4,7,2,8],让4与5比较,可见两者要交换位置,在4与2比较,不用交换位置,好了,排序完成为[2,4,5,7,2,8],
    4.之后同理,整个过程有点像打扑克牌一样!

代码实现

void insertsort(int array[],int num){
    int pre,tail;
    for(tail=1;tail<num;tail++){//未排序区域
        int temp;
        pre = tail - 1;//以排序区域
        temp = array[tail];//未排序区域中要比较的值
        while(pre>=0&&array[pre]>temp){//是现找到位置,在赋值,不是直接交换!
            array[pre+1] = array[pre];
            pre--;

        }
        array[pre+1] = temp;

    }
    printf("输出啦");
    int i;
    for(i=0;i<num;i++){
        printf("%d",array[i]);
    }
    };
int main()
{
    int array[9] = {5,3,4,7,2,8,6,9,1};
    insertsort(array,9);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值