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日

相关文章

  • Js Snowflake(雪花算法)生成随机ID的实现方法

    Js Snowflake(雪花算法)生成随机ID的实现方法 介绍 雪花算法是Twitter开源的一种简单高效、生成唯一ID的算法,可以用于解决数据分布式系统中的ID生成器。本文将介绍使用Js实现雪花算法生成随机ID的完整方法。 实现 引入 首先,我们需要引入雪花算法的js库文件snowflake.js,并在页面中引入 <script src=&quot…

    算法与数据结构 2023年5月19日
    00
  • TF-IDF与余弦相似性的应用(一) 自动提取关键词

    下面我将详细讲解“TF-IDF与余弦相似性的应用(一) 自动提取关键词”的完整攻略。 什么是TF-IDF? TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用于信息检索与分类中的文本特征提取方法,用于评估一段文本中词的重要程度。TF-IDF的核心思想就是:一个词在一篇文档中出现的频次(TF)越高,同时…

    算法与数据结构 2023年5月19日
    00
  • 数组Array的排序sort方法

    下面是关于JavaScript中数组排序sort()方法的详细攻略。 标准语法 array.sort(compareFunction) 参数 compareFunction是可选的,是用来指定按照什么顺序进行排序的,具体取决于具体实现。 如果省略,sort() 方法按照每个字符的 Unicode 代码点进行排序,因此 “10” 在排列时会在 “2” 之前,此…

    算法与数据结构 2023年5月19日
    00
  • 快速排序算法在Swift编程中的几种代码实现示例

    让我为您详细讲解“快速排序算法在Swift编程中的几种代码实现示例”的完整攻略。 快速排序算法简介 快速排序是一种常用的排序算法,其基本思想是通过一个枢轴(pivot)将待排序数组分成两个部分,一部分小于枢轴,一部分大于枢轴,然后对这两个部分进行递归排序,最终得到一个有序的数组。 快速排序算法实现 下面是三种在Swift编程中实现快速排序算法的代码示例。 代…

    算法与数据结构 2023年5月19日
    00
  • 冒泡排序算法及Ruby版的简单实现

    冒泡排序是一种比较简单的排序算法,其基本思想是重复地遍历数列,每次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换这两个元素的位置,直到遍历完整个数列,这样一次遍历后,数列中最大的元素就被排到了最后面。重复执行此过程,直到整个数列有序为止。 以下是冒泡排序算法的Ruby版简单实现: def bubble_sort(array) n = array.l…

    算法与数据结构 2023年5月19日
    00
  • c语言实现的几种常用排序算法

    C语言实现的几种常用排序算法 简介 排序是算法中最基本的任务之一,其目的是将一系列元素按照一定的顺序进行排列。在实际开发中,排序算法被广泛应用,如数据分析、数据库查找等场景。在C语言中,有多种常用的排序算法,本文将详细介绍几种排序算法的实现方法。 冒泡排序(Bubble Sort) 冒泡排序是一种基本的排序算法,其原理是通过多次比较和交换来实现排序。其实现过…

    算法与数据结构 2023年5月19日
    00
  • C语言每日练习之选择排序

    C语言每日练习之选择排序 选择排序算法简介 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思路是在未排序的数列中,从前往后依次选择最小的数,和第一个数进行交换,然后在剩余的数列中从前往后选择最小的数,与第二个数进行交换,直到选择到最后一个数为止。 选择排序的时间复杂度为O(n²),属于较慢的排序算法,但是它的实现简单易懂,不需要额…

    算法与数据结构 2023年5月19日
    00
  • C语言排序算法之冒泡排序实现方法【改进版】

    C语言排序算法之冒泡排序实现方法【改进版】可以采用双层循环的方式实现。接下来,我将为您详细介绍该排序算法的实现方法。 冒泡排序的基本思路 冒泡排序的基本思路是:通过比较相邻的元素,将小的元素交换到前面,大的元素交换到后面。在第一轮排序时,第一个元素与第二个元素进行比较,若第一个元素比第二个元素大,则将两个元素交换位置。接下来,第二个元素与第三个元素进行比较,…

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