【冒泡排序c语言代码】冒泡排序是一种基础的排序算法,通过重复遍历要排序的列表,比较相邻的元素并交换顺序错误的元素,直到整个列表有序。该算法因其简单易懂、实现方便,在教学中被广泛使用。
以下是对冒泡排序在C语言中的实现进行总结,并附上相关代码和运行结果对比表格。
一、冒泡排序原理
冒泡排序的核心思想是:从头开始比较相邻元素,如果前一个比后一个大,则交换它们的位置。这一过程不断重复,直到没有需要交换的元素为止。
- 时间复杂度:
- 最坏情况:O(n²)
- 最好情况:O(n)(当列表已经有序时)
- 平均情况:O(n²)
- 空间复杂度:O(1),原地排序
- 稳定性:稳定排序算法(相同值的元素不会改变相对位置)
二、C语言实现代码
```c
include
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
// 标志位,用于优化
int swapped = 0;
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// 交换两个元素
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
swapped = 1;
}
}
// 如果没有发生交换,提前结束
if (swapped == 0)
break;
}
}
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; 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("原始数组: \n");
printArray(arr, n);
bubbleSort(arr, n);
printf("排序后的数组: \n");
printArray(arr, n);
return 0;
}
```
三、运行结果对比表
输入数组 | 排序后数组 |
64, 34, 25, 12, 22, 11, 90 | 11, 12, 22, 25, 34, 64, 90 |
5, 4, 3, 2, 1 | 1, 2, 3, 4, 5 |
1, 2, 3, 4, 5 | 1, 2, 3, 4, 5 |
9, 7, 5, 3, 1 | 1, 3, 5, 7, 9 |
四、总结
冒泡排序虽然效率不高,但其逻辑清晰、易于理解,适合用于教学或小规模数据的排序场景。在实际应用中,通常会采用更高效的排序算法如快速排序、归并排序等。不过,对于初学者来说,掌握冒泡排序有助于理解排序的基本思想和算法设计思路。