插入排序

title

插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

具体来说,插入排序从第二个元素开始,将其与前面的元素进行比较,如果前面的元素比当前元素大,则将前面的元素后移,直到找到一个比当前元素小的位置,然后将当前元素插入该位置。如此反复,直到排序完成。

下面是插入排序的C语言实现代码:


#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;

        /* 移动元素直到找到正确的位置 */
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

void printArray(int arr[], int n)
{
    int i;
    for (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]);

    insertionSort(arr, n);
    printArray(arr, n);

    return 0;
}

这个示例定义了一个 insertionSort 函数,它使用插入排序算法对给定的整数数组进行排序。然后定义了一个 printArray 函数,用于打印排序后的数组。在 main 函数中,首先声明一个整数数组 arr,然后计算其元素数量 n。最后调用 insertionSort 函数对数组进行排序,然后调用 printArray 函数打印排序后的数组。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""