21xrx.com
2024-12-22 23:30:33 Sunday
登录
文章检索 我的文章 写文章
C++冒泡排序代码完整实现
2023-07-01 09:25:08 深夜i     --     --
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 次比较才能完成排序。

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复