在C语言中,有多种排序算法可供选择,每种算法都有其特定的应用场景和性能特点。下面将介绍几种常见的排序方法,并提供它们的实现代码和简要说明。
1. 使用标准库函数 `qsort`
`qsort` 是C语言标准库提供的一个快速排序函数,适用于任何类型的数据。它的使用非常简单,只需要提供一个比较函数即可。
```c
include include // 比较函数,升序排序 int compare(const void* a, const void* b) { return (*(int*)a - *(int*)b); } int main() { int arr[] = {5, 2, 9, 1, 5, 6}; int n = sizeof(arr) / sizeof(arr); // 使用 qsort 排序 qsort(arr, n, sizeof(int), compare); // 输出结果 for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 2. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 ```c include void bubble_sort(int arr[], int len) { for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {22, 34, 3, 32, 82, 55, 89, 50, 37, 5}; int len = sizeof(arr) / sizeof(arr); // 计算数组长度 bubble_sort(arr, len); // 打印排序后的数组 for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 3. 选择排序(Selection Sort) 选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 ```c include void selection_sort(int arr[], int len) { for (int i = 0; i < len - 1; i++) { int min_idx = i; for (int j = i + 1; j < len; j++) { if (arr[j] < arr[min_idx]) { min_idx = j; } } if (min_idx != i) { int temp = arr[i]; arr[i] = arr[min_idx]; arr[min_idx] = temp; } } } int main() { int arr[] = {22, 34, 3, 32, 82, 55, 89, 50, 37, 5}; int len = sizeof(arr) / sizeof(arr); // 计算数组长度 selection_sort(arr, len); // 打印排序后的数组 for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 4. 插入排序(Insertion Sort) 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。