Insert-sort-0

本文介绍直接插入排序算法,它是稳定的算法。基本思想是将数组分为有序区和无序区,依次将无序区元素插入有序区合适位置。还说明了排序方法,包括查找插入位置和移动记录,并给出了C++代码实现及示例。

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


title: Insert_sort
date: 2019-03-21 22:42:51
tags:

title: Insert_sort
date: 2019-03-20 10:07:39
catrgories:Algorithm ranking
tags:
description:直接插入排序算法的实现

直接插入排序是稳定的算法。

  1. 直接插入排序的基本思想:
    假设待排序的记录存放在数 组R[1…n]中。初始时,R[1]自成1个有序区,无序区为R[2…n]。
    从i=2起至i=n为止,依次将R[i]插入当前的有序区R[1…i-1]中,生成含n个记录的有序区。
    第i-1趟直接插入序列;
    即可以理解为R被划分成两个子区间,已经排好序的R[1…i-1]与待排序区间R[i…n].
    插入排序就是将待排序区间中的每个记录插入到有序区的合适位置,使R[1…i-1]变为新的有序区R[1…i].
    可以理解为进行扑克游戏使,每位玩家整理手牌的过程。
    2.排序方法:
    (1)在当前有序区R[1…i-1]中查找R[i]的正确插入位置k(1<=k<=i-1).
    (2) 将R[k…i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i].
    这里我们将使用升序排序,也就是说,如果R[i]的关键字大于等于R[1…i-1]中所有记录的关键字,则R[i]就是插入的位置
    或者查找比较操作和记录移动操作交替的进行。
    实现:
    #include
    using namespace std;
    //直接插入排序
    void Insert_sort(int a[], int n)
    {
    int i, j, temp;
    for (i = 1; i < n; i++)//进行n-1次的选择
    {
    temp = a[i];
    for (j = i - 1; j >= 0 && temp < a[j]; j–)
    {
    a[j + 1] = a[j];
    }
    a[j+1] = temp;
    }
    }
    void print_array(int a[], int len)
    {
    for (int i = 0; i < len; i++)
    {
    cout << a[i] << ’ ';
    }
    cout << endl;
    }
    int main()
    {
    int a[] = { 7,3,5,8,9,1,2,4,6 };
    cout << “before Insert_sort:”;
    print_array(a, 9);
    Insert_sort(a, 9);
    cout << “after Insert_sort:”;
    print_array(a, 9);
    system(“pause”);
    return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值