C语言中插入排序

在C语言中,插入排序是一种简单的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。以下是插入排序的C语言实现,以及每个步骤的文字讲解:

cs 复制代码
#include <stdio.h>

void insertionSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i]; // 当前要排序的元素
        j = i - 1;

        // 将arr[i]与已排序好的序列arr[0...i-1]中的元素进行比较,找到合适的位置插入
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j]; // 将大于key的元素向后移动
            j = j - 1;
        }
        arr[j + 1] = key; // 将key插入到合适的位置
    }
}

int main() {
    int n, i;
    printf("请输入数组的长度: ");
    scanf("%d", &n);
    
    int arr[n];
    printf("请输入数组的元素(用空格分隔): ");
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    // 对数组进行插入排序
    insertionSort(arr, n);

    // 输出排序后的数组
    printf("排序后的数组: ");
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

文字讲解:

  1. 定义一个插入排序函数insertionSort,它接受一个整型数组和数组的长度作为参数。

  2. 在main函数中,首先提示用户输入数组的长度,并读取用户输入。

  3. 根据用户输入的长度,动态创建一个整型数组。

  4. 提示用户输入数组的元素,并通过循环读取每个元素。

  5. 调用insertionSort函数对数组进行排序。

  6. 在insertionSort函数中,使用一个for循环从数组的第二个元素开始遍历数组。

  7. 在每次迭代中,将当前元素(key)与已排序好的部分进行比较,找到合适的位置插入。

  8. 使用一个while循环,将大于key的元素向后移动,直到找到合适的位置。

  9. 将key插入到合适的位置。

  10. 在main函数中,输出排序后的数组。

相关推荐
三品吉他手会点灯2 分钟前
STM32 VSCode 开发-C/C++的环境配置中,找不到C/C++: Edit Configurations选项
c语言·c++·vscode·stm32·单片机·嵌入式硬件·编辑器
逻辑驱动的ken19 分钟前
Java高频面试考点场景题09
java·开发语言·数据库·算法·oracle·哈希算法·散列表
帅小伙―苏33 分钟前
力扣42接雨水
前端·算法·leetcode
AI科技星1 小时前
精细结构常数α的几何本源:从第一性原理的求导证明、量纲分析与全域验证
算法·机器学习·数学建模·数据挖掘·量子计算
三品吉他手会点灯1 小时前
C语言学习笔记 - 1.C概述 - 本讲内容概述
c语言·笔记·学习
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 287. 寻找重复数 | C++ 数组判环 (快慢指针终极解法)
c++·算法·leetcode
MegaDataFlowers1 小时前
26.删除有序数组中的重复项
算法
故事和你912 小时前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
吴可可1232 小时前
C#合并首尾相连多段线实战
算法·c#
KMDxiaozuanfeng3 小时前
卡梅德生物技术快报|SPR 技术应用|基于 SPR 亲和力的中药活性成分筛选系统实现与数据分析
科技·算法·面试·考试