21xrx.com
2025-03-28 17:32:52 Friday
文章检索 我的文章 写文章
C++冒泡排序代码完整实现
2023-07-01 09:25:08 深夜i     10     0
C++ 冒泡排序 代码 实现 完整

C++ 冒泡排序代码完整实现

冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻的元素,将较大的元素交换到右边,从而实现从小到大的排序。整个过程其实就像水中的冒泡一样,故得名冒泡排序。

以下是 C++ 冒泡排序的完整代码实现:

#include<iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
  int i, j, temp;
  bool swapped;
  for (i = 0; i < n - 1; i++) {
    swapped = false;
    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 = true;
      }
    }
    if (swapped == false)
      break;
  }
}
int main() {
  int arr[] = 90 ;
  int n = sizeof(arr) / sizeof(arr[0]);
  bubbleSort(arr, n);
  cout << "Sorted array: ";
  for (int i = 0; i < n; i++)
    cout << arr[i] << " ";
  cout << endl;
  return 0;
}

代码解释:

1. 在 `main()` 函数中,我们定义了一个整型数组 `arr` 并初始化了其中的元素值。

2. 我们通过计算数组长度来获得 `n` 的值。

3. 我们调用了 `bubbleSort` 函数,并传入了 `arr` 和 `n` 作为参数进行排序。

4. 在 `bubbleSort` 函数中,我们定义了 `i`, `j` 和 `temp` 三个变量。

5. `swapped` 是一个布尔类型的变量,用于表示是否有交换发生。

6. 在第一个 `for` 循环中,我们要遍历数组中的每个元素,即从第一个元素到倒数第二个元素,因为我们要进行相邻元素的比较,而最后一个元素没有后继元素。

7. 在内部的 `for` 循环中,我们要遍历所有未排序的元素(即从第一个元素到第 n-i-1 个元素),并比较相邻元素的大小。

8. 如果前面的元素比后面的元素大,则进行交换操作,并将 `swapped` 标志设置为 `true`。

9. 如果 `swapped` 的值没有变为 `true`,说明数组已经有序,可以提前结束循环。

10. 最后,我们输出排序后的数组元素。

使用冒泡排序进行排序的时间复杂度为 $O(n^2)$,因为我们要比较相邻元素,而对于长度为 `n` 的数组,我们需要进行 `n-1`, `n-2`, ... , 2, 1 次比较才能完成排序。

总之,冒泡排序虽然时间复杂度较高,但是简单易懂,容易实现,对于小规模的数据集效果也不错。

  
  

评论区

请求出错了