插入排序

设计思想:如下5个数3 1 4 5 6, 从第i=1个元素开始往前遍历,到6结束每次遍历都使从0到第i-1个元素依次与第i个元素判断,(升序)若比它大,则依次后移,反之则停止把它插入第i个元素。具体程序如下

#include <iostream> 
using namespace std; 

void sort(int *a, int len)
{
    int i, j;
    int temp = 0;

    for(i=1; i<len; i++)
    {
        temp = a[i];
        for(j=i-1; j>=0; j--)
        {
            if(a[j]>temp)
                a[j+1] = a[j];
            else
            {
                //a[j+1] = temp;  这里可以注释掉
                break;
            }
        }      
        //注意内循环结束后,判断是否正常退出,若是说明前面一个都没有插入j=-1; 则应是a[i]最小,需插入第一个位置

        //if(j<0)相对来说是一种优化,因为无论内循环是否正常退出,j的位置都会确定好
            a[j+1] = temp;
    }
}

void print_o(int *a, int len)
{
    int i;
    for(i=0; i<len; i++)
        cout << a[i] << " ";
    cout << endl;
}

int main()
{
    int a[5] = {4,3,3,6,2};

    cout << "no sort : ";
    print_o(a, 5);

    sort(a, 5);

    cout << "has sort : ";
    print_o(a,5);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值