C语言实现冒泡排序详解及示例

需积分: 46 3 下载量 172 浏览量 更新于2024-07-26 收藏 879KB PPT 举报
"C语言冒泡排序的详细解释和演示" 冒泡排序是一种简单直观的排序算法,尤其适合初学者理解和实现。它的工作原理就如同水中的气泡上升,较大值的元素逐步“浮”到数组的顶部。在这个过程中,算法会通过比较相邻元素并根据需要交换它们的位置来达到排序的目的。 冒泡排序的基本步骤如下: 1. 从数组的第一个元素开始,比较当前元素与下一个元素。 2. 如果当前元素大于下一个元素,就交换它们的位置。否则,保持不变。 3. 继续比较下一组相邻元素,重复上述步骤。 4. 这一过程称为一趟排序,会在数组末尾形成一个最大值。 5. 接下来,对剩下的未排序部分重复以上步骤,直到所有元素都有序排列。 在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 - 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[] = {45, 54, 12, 66, 33, 39, 10, 26, 72, 5}; int n = sizeof(arr) / sizeof(arr[0]); printf("Original array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } bubbleSort(arr, n); printf("\nSorted array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 在上述代码中,`bubbleSort`函数实现了冒泡排序,而`main`函数则展示了如何调用该函数并打印排序前后的数组。通过这个例子,我们可以看到冒泡排序的过程,即每趟排序后,最大的元素会被“冒”到数组的末尾。 需要注意的是,冒泡排序的时间复杂度在最坏的情况下为O(n^2),其中n是数组的长度。这使得它在处理大规模数据时效率较低。然而,对于小规模数据或部分有序的数据,冒泡排序仍有一定的实用价值,因为其简单性和易于理解性。 C语言的冒泡排序是一个很好的学习排序算法的起点,它帮助我们理解排序的基本概念,并为学习更复杂的排序算法打下基础。