插入排序c语言代码

宇宙热恋期

插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。以下是使用C语言实现插入排序的详细过程。

首先,我们需要了解插入排序的基本思想。插入排序在对一组数据进行排序时,会假设第一个元素已经被排序。然后,它会取出下一个元素,将其插入到它前面的已排序序列中的适当位置。这个过程会一直重复,直到所有元素都被插入到已排序序列中。

下面是一个使用C语言编写的插入排序算法的示例代码:

#include <stdio.h>

// 插入排序函数
void insertionSort(int arr[], int n) {
    int i, j, key;
    for (i = 1; i < n; i++) {
        key = arr[i]; // 记录要插入的元素
        j = i - 1;

        // 将arr[i]插入到已排序的子数组中
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key; // 插入key到正确的位置
    }
}

// 打印数组的函数
void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

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

    printf("Original array: \n");
    printArray(arr, n);

    // 调用插入排序函数
    insertionSort(arr, n);

    printf("Sorted array: \n");
    printArray(arr, n);

    return 0;
}

在这段代码中,insertionSort 函数实现了插入排序的逻辑。它首先从第二个元素开始(假设第一个元素已经排序),然后逐个将每个元素插入到它前面的已排序序列中。printArray 函数用于打印数组,方便我们查看排序前后的结果。

插入排序的时间复杂度平均为O(n^2),在小规模数据或者基本有序的数据集中,插入排序的性能表现非常良好。但是,对于大规模的无序数据,插入排序的性能会显著下降。

总的来说,插入排序是一种稳定、简单且易于实现的排序算法,适用于小数据集或者部分有序的序列。在实际应用中,根据数据的特点选择合适的排序算法是非常重要的。

版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com

目录[+]

取消
微信二维码
微信二维码
支付宝二维码