插入排序

本文详细介绍了插入排序的基本原理和实现步骤,通过两个版本的程序代码展示了如何实现从小到大的排序过程。首先将数组的第一个元素视为已排序的部分,然后依次将剩余元素与已排序部分进行比较并插入正确位置。

插入排序分为两部分:

(一)待排序的部分;

(二)已排序的部分。

若待排序的部分都储存在数组中,默认数组中的第一个数是已经排好的部分,所以从第二个数开始排序。

基本思想:从待排序的部分中,从第一个开始取,与排好序的部分中的最后一个数进行比较。若待排序的数比较小,则将比较的数据向后移动一位;若待排序的数比较大,则将待排序的数据插入已排序的部分。


源程序如下:


普通版:

#include<stdio.h>
#include<iostream>
using namespace std;
//插入排序,从小到大

int main()
{
    int num[10]={1,4,9,5,6,4,3,7,0,45};//待排序的整数数组
    int key;
    for(int i=1;i<10;i++)//比较n-1轮
        {
            key=num[i];//记录待比较的数据
            int j=i-1;
            while(j>=0&&num[j]>key)
            {
                num[j+1]=num[j];
                num[j]=key;
                j--;
            }
        }
    for(int i=0;i<10;i++)
        cout<<num[i]<<endl;
    return 0;
}

升级版:

#include "stdafx.h"
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
//插入排序,从小到大
void sorting(int num[],int n)
{
    int key;
    for(int i=1;i<n;i++)//比较n-1轮
        {
            key=num[i];//记录待比较的数据
            int j=i-1;
            while(j>=0&&num[j]>key)
            {
                num[j+1]=num[j];
                num[j]=key;
                j--;
            }
        }
}
int main()
{
    int num[10]={0,5,1,9,3,2,7,8,6,4};//待排序的整数数组
    sorting(num,10);
    for(int i=0;i<10;i++)
        cout<<num[i]<<endl;
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值