C语言实现冒泡排序算法详解

0 下载量 130 浏览量 更新于2024-08-03 收藏 2KB MD 举报
"冒泡法排序是计算机科学中一种基础的排序算法,其主要思想是通过重复遍历待排序的数列,依次比较相邻元素并根据需要进行交换,以使较大的元素逐渐‘浮’到数列的末尾。本文将详细讨论如何用C语言实现冒泡排序算法,并提供一个具体的示例程序。 在C语言中,实现冒泡排序的关键在于编写正确的比较和交换元素的逻辑。以下是一个简单的C语言冒泡排序程序: ```c #include<stdio.h> // 冒泡排序函数 void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { // 遍历整个数组 for (int j = 0; j < n - i - 1; j++) { // 每轮比较n-i-1次 if (arr[j] > arr[j + 1]) { // 如果当前元素大于下一个元素 // 交换两个元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } // 打印数组函数 void printArray(int arr[], int n) { for (int i = 0; i < n; i++) { printf("%d", arr[i]); } printf("\n"); } int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; // 待排序的数组 int n = sizeof(arr) / sizeof(arr[0]); // 计算数组长度 printf("原始数组:"); printArray(arr, n); // 打印原始数组 bubbleSort(arr, n); // 调用冒泡排序函数 printf("排序后的数组:"); printArray(arr, n); // 打印排序后的数组 return 0; } ``` 在这个程序中,`bubbleSort`函数执行冒泡排序的核心逻辑,它通过两层嵌套循环实现。外层循环控制总的遍历次数,内层循环则负责在每一轮中比较并交换相邻元素。当遇到逆序对(即当前元素大于下一个元素)时,就进行交换。`printArray`函数用于辅助显示数组内容,方便观察排序前后的变化。 在`main`函数中,首先初始化了一个待排序的数组,然后调用`bubbleSort`进行排序,最后分别打印排序前后的数组。程序的输出结果如下: ``` 原始数组:64342512221190 排序后的数组:11122225346490 ``` 这个程序清晰地展示了冒泡排序的工作原理。虽然冒泡排序的时间复杂度在最坏情况下为O(n^2),但它对于小规模数据或部分有序的数据具有一定的效率。在实际应用中,由于其简单性和易理解性,冒泡排序常被用于教学和算法理解。然而,在处理大规模数据或追求性能的情况下,更高效的排序算法如快速排序、归并排序等会是更好的选择。"