在计算机科学中,C语言分类算法是学习数据结构与算法的基础内容。无论你是编程初学者还是有一定经验的开发者,掌握几种经典的排序方法都是必不可少的。本文将用通俗易懂的语言,带你一步步理解并实现两种最常用的排序算法:冒泡排序和快速排序。
分类算法(Sorting Algorithm),也叫排序算法,是指将一组无序的数据按照特定规则(如从小到大或从大到小)重新排列的过程。在C语言中,我们通常对数组进行排序。

冒泡排序是最简单、最容易理解的排序算法之一。它的基本思想是:重复地遍历待排序的数组,比较相邻的两个元素,如果顺序错误就交换它们。这个过程会持续进行,直到整个数组有序为止。
为什么叫“冒泡”?因为每一轮比较后,最大的元素会像气泡一样“浮”到数组末尾。
#include <stdio.h>void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { // 每轮将最大值“冒泡”到末尾 for (int j = 0; j < n - 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[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); printf("排序前: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } bubbleSort(arr, n); printf("\n排序后: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0;}
这段代码展示了如何使用冒泡排序C语言实现。时间复杂度为 O(n²),适合小规模数据排序。
快速排序是一种高效的分治排序算法,由英国计算机科学家 Tony Hoare 在1960年提出。它通过选择一个“基准”(pivot)元素,将数组分为两部分:小于基准的放在左边,大于基准的放在右边,然后递归地对左右子数组进行排序。
快速排序平均时间复杂度为 O(n log n),是实际应用中最常用的排序算法之一。
#include <stdio.h>// 分区函数:返回基准元素的正确位置int partition(int arr[], int low, int high) { int pivot = arr[high]; // 选择最后一个元素作为基准 int i = (low - 1); // 小于基准的元素的索引 for (int j = low; j <= high - 1; j++) { if (arr[j] < pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return (i + 1);}// 快速排序主函数void quickSort(int arr[], int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); // 排序左半部分 quickSort(arr, pi + 1, high); // 排序右半部分 }}int main() { int arr[] = {10, 7, 8, 9, 1, 5}; int n = sizeof(arr) / sizeof(arr[0]); printf("排序前: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } quickSort(arr, 0, n - 1); printf("\n排序后: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0;}
以上就是快速排序C语言代码的完整实现。虽然逻辑稍复杂,但效率远高于冒泡排序。
通过本文,你已经学会了两种经典的数据结构排序算法在C语言中的实现方式:
建议初学者先掌握冒泡排序,再挑战快速排序。多动手写代码、调试运行,才能真正理解算法的精髓!
如果你觉得这篇文章对你有帮助,欢迎收藏并分享给更多学习C语言的朋友!
本文由主机测评网于2025-12-20发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210497.html