C++插入排序算法实例详解

yizhihongxing

C++插入排序算法实例详解

什么是插入排序算法?

插入排序算法是一种简单直观的排序算法,其基本思想是将待排序的数据插入已排序序列的合适位置,以达到排序的目的。该算法的时间复杂度为 O(N^2),适用于数据量较小的排序场景。

插入排序算法的基本步骤

插入排序算法的基本步骤可以归纳为以下三个:

  1. 将待排序序列的第一个元素视作已排序序列,将后面的元素逐个与已排序序列中的元素比较,并将其插入合适的位置。

  2. 依次将待排序序列中的其他元素插入已排序序列的恰当位置,直到待排序元素全部插入完成。

  3. 完成排序,输出排好序的结果。

C++插入排序算法实例

下面是一段使用 C++ 语言实现插入排序算法的代码:

#include<iostream>
using namespace std;

void insertionSort(int arr[], int n)
{
    int i, j, key;
    for (i = 1; i < n; i++)
    {
        key = arr[i];
        j = i - 1;

        while (j >= 0 && arr[j] > key)
        {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

int main()
{
    int arr[] = { 12, 11, 13, 5, 6 };
    int n = sizeof(arr) / sizeof(arr[0]);

    insertionSort(arr, n);

    cout << "排序后的数组:" << endl;
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    return 0;
}

该程序中,insertionSort() 函数是实现插入排序的核心代码,程序首先定义了一个待排序的数组 arr,接着调用 insertionSort() 函数进行排序。排序结束后,程序输出排序后的数组。

示例说明

示例一

假设有一个待排序序列 arr[]={5,8,2,7,1,3,6,4},使用插入排序算法后,得到的排序序列为 1,2,3,4,5,6,7,8

详细过程:

  1. 第一次排序后得到 arr[]={5,8,2,7,1,3,6,4},此时已排序部分只包含一个元素 5

  2. 将待排序部分的下一个元素 8 与已排序部分的唯一元素 5 进行比较,发现 8 大于 5,故将 8 插入已排序部分的最后面,此时已排序部分变为 5,8

  3. 将待排序部分的下一个元素 2 与已排序部分中的元素进行比较,先将 8 向后移一位,再将 5 向后移一位,将 2 插入到已排序序列的第一位,此时已排序部分变为 2,5,8

  4. 依次对剩余元素进行插入排序,最终得到排序序列为 1,2,3,4,5,6,7,8

示例二

假设有一个待排序序列 arr[]={1,2,3,4,5},使用插入排序算法后,得到的排序序列与原序列相同,为 1,2,3,4,5

详细过程:

  1. 第一次排序后得到 arr[]={1,2,3,4,5},此时已排序部分包含整个待排序序列。

  2. 算法直接结束,输出原序列即可。

总结

插入排序算法是一种简单高效的排序算法,虽然其时间复杂度较高,但在数据规模较小的情况下表现较好。在实际开发中,需要根据不同的场景选择不同的排序算法,合理选取排序算法可以极大地提高程序的运行效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++插入排序算法实例详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • C++ 计数排序实例详解

    C++ 计数排序实例详解 简介 计数排序是一种稳定的排序算法,其时间复杂度为O(n + k),其中n为待排序序列的长度,k为序列中元素的取值范围。相比其他排序算法,计数排序的时间复杂度较小,但需要占用更多的内存空间。计数排序在排序的元素值比较小,且元素集合密集程度比较大的场景下表现更加出色。 算法原理 计数排序的基本思想是,统计待排序序列中,每个元素出现的个…

    算法与数据结构 2023年5月19日
    00
  • PHP排序算法之快速排序(Quick Sort)及其优化算法详解

    PHP排序算法之快速排序(Quick Sort)及其优化算法详解 快速排序是一种高效的排序算法,也是PHP中常用的排序方法之一。在本攻略中,我们将介绍快速排序的基本思想与原理,以及一些优化算法和实际示例。 快速排序基本原理 快速排序的基本思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部…

    算法与数据结构 2023年5月19日
    00
  • PHP排序算法类实例

    让我先给出该攻略的大纲: 算法类的设计思路 冒泡排序算法示例 快速排序算法示例 使用算法类进行排序 接下来,我将详细讲解每一步内容。 1. 算法类的设计思路 首先,我们需要为排序算法创建一个类,这个类应该包含常见排序算法的实现函数。这些函数应该是静态函数,以便我们可以直接访问它们,而不必实例化排序类。 我们还需要实现一些通用的辅助函数,这些函数可以在算法函数…

    算法与数据结构 2023年5月19日
    00
  • C/C++实现八大排序算法汇总

    C/C++实现八大排序算法汇总 简介 本文旨在介绍常用的八大排序算法并用 C/C++ 语言实现。 八大排序算法包括: 冒泡排序(Bubble Sort) 插入排序(Insertion Sort) 选择排序(Selection Sort) 快速排序(Quick Sort) 归并排序(Merge Sort) 希尔排序(Shell Sort) 堆排序(Heap S…

    算法与数据结构 2023年5月19日
    00
  • JS简单数组排序操作示例【sort方法】

    JS简单数组排序操作示例【sort方法】 操作说明 在JavaScript中,通过数组的sort()方法可以对数组进行排序操作。sort()方法会直接对原数组进行排序,返回排序后的原数组。 sort()方法通常需要传入一个比较函数,来指定排序规则。比较函数接收两个参数,分别表示待比较的两个元素,如果返回值小于0,则表示第一个元素排在第二个元素前面;如果返回值…

    算法与数据结构 2023年5月19日
    00
  • c++数组排序的5种方法实例代码

    C++ 数组排序的 5 种方法实例代码 本篇文章介绍了使用 C++ 实现数组排序的 5 种方法,包括冒泡排序、选择排序、插入排序、希尔排序和快速排序。下面我们就分别详细阐述各种排序方法的实现。 冒泡排序 冒泡排序的基本思想是比较相邻的两个元素,如果顺序错误就交换位置。我们重复地执行这个过程,直到排序完成。示例代码如下: void BubbleSort(int…

    算法与数据结构 2023年5月19日
    00
  • Java语言字典序排序算法解析及代码示例

    Java语言字典序排序算法解析及代码示例 概述 字典序排序是一种常见的字符串排序算法,其可用于字符串编程中的许多场景,例如:搜索引擎中输入提示的联想;电商网站的商品搜索结果排列;信息化项目中的数据对比等。 本文将介绍Java语言中使用字典序排序的方法以及实现代码,并包含两个代码示例以帮助读者更好地理解。 基本思想 字典序排序的基本思想是将需要排序的字符串按照…

    算法与数据结构 2023年5月19日
    00
  • 微信红包随机生成算法php版

    下面我会详细讲解“微信红包随机生成算法php版”的完整攻略。 算法简介 微信的红包算法采用的是二倍均值法,即将总金额分成若干个等份,然后按照一定的规则分配给每个红包领取者,使得每个红包领取者所得到的金额期望相等。具体来说,就是按照以下步骤来生成红包: 首先获取红包数量和总金额。 计算出每个红包的最大金额,即 max = totalAmount / num *…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部