插入排序的c++代码实现

头文件是三个插入排序的代码,mian函数是一个测试样例

在第i轮,看的是第i+1个数据(位序)要插入在前面i个数据已经排好序的序列的哪个位置

每次就是比较第j位(j=i-1;j>=0;j--)要是还是比这个小,就直接让j位的值移动到j+1位置上去,直到比下一位要大停止,并将之放在这个位置上

(从位序为2的开始第一轮)

insertsort3.h

#pragma once
//直接插入排序(无哨兵)
//这种是最常规的,数组0位置无哨兵(数组是0~length-1)。没有涉及二分查找
template<typename DataType>
void insertSort(DataType D[], int length) {
    DataType key;
    int i, j;
    for (i = 1; i < length; ++i) {//算法从第二个开始
        if (D[i] < D[i - 1]) {
            key = D[i];
            for (j = i - 1; j >= 0 && key < D[j]; --j)//因为无哨兵在查找的过程中需要每次多判断 j是否超出0
                D[j + 1] = D[j];
            D[j + 1] = key;//小心这里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值