手写冒泡排序,并分析冒泡排序的时间复杂度和空间复杂度 void BubbleSort (int arr[] ,int arrLength)补充完整
时间: 2024-09-09 15:02:39 浏览: 44
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。
以下是一个使用C语言实现的冒泡排序算法的示例代码:
```c
void BubbleSort(int arr[], int arrLength) {
int temp, i, j;
for (i = 0; i < arrLength - 1; i++) { // 遍历arrLength-1趟
for (j = 0; j < arrLength - 1 - i; j++) { // 每趟比较时,后面的i个数已经是排好序的了,无需再比较
if (arr[j] > arr[j + 1]) { // 相邻元素两两对比
temp = arr[j]; // 交换
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
时间复杂度分析:
冒泡排序的时间复杂度为O(n^2)。在最坏的情况下,即输入的数组完全反序,需要进行n-1次遍历,每次遍历中有n-1次比较和可能的交换操作。在最好的情况下,即输入数组已经是正序的,每次遍历中的比较和交换操作都会减少,但总的比较次数仍然是O(n^2),由于没有交换操作,最好情况下的时间复杂度可以降低到O(n)。
空间复杂度分析:
冒泡排序是一种原地排序算法,不需要额外的存储空间,因此其空间复杂度为O(1)。
阅读全文