📜  插入排序的C程序(1)

📅  最后修改于: 2023-12-03 15:25:58.207000             🧑  作者: Mango

插入排序的C程序介绍

插入排序是一种简单的排序算法,它的基本思想是将一个数据插入到已排好序的有序数据中,从而得到一个新的、个数加一的有序数据。插入排序分为直接插入排序和希尔排序两种,而本文将介绍的是直接插入排序。

直接插入排序

直接插入排序的过程类似于打扑克牌,每次将一张牌插入到手中已经排好序的牌中。具体实现时,将第一个元素看作一个有序序列,依次将后面的元素插入到这个序列中。

代码实现

下面是直接插入排序的C程序实现,代码中使用了一个辅助变量temp,用于保存当前需要排序的元素,i用于循环控制,j表示当前比较的元素位置,从头开始比较,直到找到第一个大于temp的元素,然后将temp插入到该元素之前。

void insertion_sort(int arr[], int len)
{
    for(int i = 1; i < len; i++)
    {
        int temp = arr[i];
        int j = i - 1;
        while(j >= 0 && arr[j] > temp)
        {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}
使用示例

下面是使用示例,首先定义一个数组作为排序的对象,然后使用函数进行排序。

#include <stdio.h>

void insertion_sort(int arr[], int len);

int main()
{
    int arr[] = {3, 6, 4, 2, 11, 8, 9};
    int len = sizeof(arr) / sizeof(int);
    insertion_sort(arr, len);
    for(int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

输出结果为:2 3 4 6 8 9 11。

总结

通过本文的介绍,我们了解了直接插入排序的基本思想和C语言实现方法,并使用示例进行了演示。插入排序是一个简单、易于实现的排序算法,适用于小规模数据的排序,但是对于大规模数据,由于其时间复杂度为O(n²),效率比较低,通常不作为重要的排序算法使用。