C语言之直接插入排序算法的方法

C语言直接插入排序算法的方法

什么是直接插入排序

直接插入排序,是一种应用最广泛的排序算法之一,也是一种稳定的排序算法。它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的有序表。具体的过程是将待排序的元素插入到已经排好序的元素中,使插入后仍保持有序。

代码实现

下面是用C语言实现直接插入排序算法的代码:

void direct_insert_sort(int arr[], int len)
{
    if (len <= 1)
        return;
    for (int i = 1; i < len; i++) {
        // 取出要插入的数
        int temp = arr[i];
        int j;
        // 在 sorted[0:i-1] 中找到合适的位置进行插入
        for (j = i - 1; j >= 0; j--) {
            if (arr[j] > temp) {
                // 如果该位置的数比要插入的数大,则将该位置的数后移
                arr[j + 1] = arr[j];
            } else {
                // 否则退出循环,temp就是要插入的位置
                break;
            }
        }
        arr[j + 1] = temp;
    }
}

示例

假设我们要排序的数组如下:

2 4 1 3 5

第一个循环

排序时,先比较2和4,不需要进行排序。接下来比较4和1,将1插入到2 4中间的位置变为2 1 4,接下来比较4和3,3插入到2 1 4中间的位置变为2 1 3 4,最后比较4和5,不需要进行排序,得到排好序的数组:

2 1 3 4 5

第二个循环

先比较1和2,1已经在正确位置,不需要进行排序。然后比较3和1,3在正确位置,不需要排序。比较3和2,2插入到1 3中间的位置成为1 2 3,然后比较4和1,4插入到1 2 3中间的位置成为1 2 3 4,最后比较5和1 2 3 4都大,不需要进行排序,得到排好序的数组:

1 2 3 4 5

这就是直接插入排序的详细过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言之直接插入排序算法的方法 - Python技术站

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

相关文章

  • C++递归实现选择排序算法

    实现选择排序算法的递归版本,步骤如下: 步骤1:找到最小值 首先,在要排序的数组中找到最小值,这个过程可以用for循环来实现。具体实现如下: // 找到数组中最小值的下标 int findMinIndex(int arr[], int startIndex, int endIndex) { int minIndex = startIndex; for (in…

    算法与数据结构 2023年5月19日
    00
  • C#实现冒泡排序算法的代码示例

    这里是详细讲解「C#实现冒泡排序算法的代码示例」的完整攻略。 算法简介 冒泡排序算法通过不断比较相邻的两个元素,将大的元素慢慢“冒泡”到数组的末尾,最终得到一个从小到大排列的有序数组。 计算机科学领域的算法大多数都有多种实现方式,这里我们介绍最基础的一种冒泡排序算法实现方式。 C# 实现代码示例 以下是 C# 实现冒泡排序算法的代码示例: public st…

    算法与数据结构 2023年5月19日
    00
  • C++排序算法之插入排序

    C++排序算法之插入排序 插入排序是一种简单且直观的排序算法,在实现上也比较容易。它的基本思路是把一个待排序的序列分成两个部分:已排序部分和未排序部分,然后从未排序部分取出一个元素插入到已排序部分的合适位置,作为新的已排序部分。 算法过程 插入排序的过程可以用以下步骤概括: 将序列的第一个元素看成已排序部分,其他元素看成未排序部分 从未排序部分选择一个元素,…

    算法与数据结构 2023年5月19日
    00
  • Java 直接插入排序的三种实现

    Java 直接插入排序的三种实现 本文将介绍 Java 中直接插入排序的三种实现方式,分别为插入排序、希尔排序和折半插入排序。 插入排序 插入排序是一种简单直观的排序算法,其基本思想是将一个待排序的元素插入到已排好序列中的适当位置。 以下是 Java 中插入排序的实现代码: public static void insertSort(int[] arr) {…

    算法与数据结构 2023年5月19日
    00
  • C语言 冒泡排序算法详解及实例

    冒泡排序算法详解及实例 什么是冒泡排序算法 冒泡排序是一种很基础的排序算法,它通过从序列的一端开始,依次比较相邻两个元素的大小,如果它们的顺序不对,就交换它们的位置,直到把整个序列排序完成。冒泡排序算法的时间复杂度为O(n^2),所以它并不适合排序规模很大的序列。 冒泡排序算法的实现 冒泡排序算法的实现很简单,其核心代码如下: void bubble_sor…

    算法与数据结构 2023年5月19日
    00
  • 如何利用Python动态展示排序算法

    首先,我们需要了解一下Python中常用的用于动态展示的库——matplotlib和pygame。 matplotlib是一个数据可视化库,它可以让我们轻松地创建各种静态和动态的图形,包括折线图、柱形图等等,而pygame则是一个开源的游戏开发库,它专用于创建游戏和动态图形。 接下来,我们就可以使用这两个库来展示排序算法了。 下面是一个示例,展示了如何使用m…

    算法与数据结构 2023年5月19日
    00
  • STl中的排序算法详细解析

    STl中的排序算法详细解析 概述 在STL中,sort是一种常用的排序算法。sort算法旨在将元素从小到大排序,但也可以使用cmp函数指定排序方式。 算法实现 sort算法基于“快速排序”算法的实现。其基本思想是从待排序列中选取一定的数值作为划分元素(pivot),通过一趟排序将所有比该元素小的数放到它的左边,所有比该元素大的数放到它的右边,然后再对左右两个…

    算法与数据结构 2023年5月19日
    00
  • 详解高性能缓存Caffeine原理及实战

    详解高性能缓存Caffeine原理及实战 简介 Caffeine是一个基于Java的高性能缓存库,其目标是提供比ConcurrentHashMap更高效、更灵活的缓存方案。Caffeine支持多种缓存策略、过期机制以及可自定义的缓存加载策略等功能。本文将详细介绍Caffeine的原理、使用方法及实现实例。 Caffeine的原理 Caffeine的核心是一个…

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