插入排序
插入排序(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 函数打印排序后的数组。