C语言冒泡排序的实现、稳定性、时间复杂度
时间: 2024-09-24 09:25:12 浏览: 49
c语言实现的冒泡排序.zip
C语言中的冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,直到没有任何一对数字需要交换为止。以下是冒泡排序的基本步骤:
```c
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) { // 遍历n-1次,因为最后一次会直接完成排序
for (int j = 0; j < n - i - 1; j++) { // 每轮内部循环减少一个比较次数
if (arr[j] > arr[j + 1]) {
// 如果当前元素大于下一个元素,则交换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
冒泡排序的特点是稳定性的,也就是说,相等的元素在排序前后的相对位置不会改变。例如,如果有两个值相同的元素,一个在另一个之前,那么排序后,这个顺序依然保持不变。
至于时间复杂度,冒泡排序最坏和平均情况下的时间复杂度都是O(n^2),其中n是数组的长度。这是因为无论输入数据如何,都需要最多进行n*(n-1)/2次比较和交换操作。因此,对于大规模数据,冒泡排序效率较低,不适合处理大数据集。
阅读全文