C++ 冒泡排序

基本原理

  1. 比较相邻的元素,如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
  3. 重复以上的步骤,每次比较次数 - 1,直到不需要比较。

通过这种方法,我们可以得到以下排序过程:

image.png

经过分析,我们可以得到元素个数、排序轮数和对比次数之间的数学关系。这样就找到了代码的逻辑关系:

  • 排序总轮教数= 元素个数 - 1。
  • 每轮对比次数 = 元素个数 - 排序轮数 - 1。

代码实现

#include <iostream>

using namespace std;

int main()
{
    int arr[] = {4, 2, 8, 0, 5, 7, 1, 3, 9};
    int len = sizeof(arr) / sizeof(arr[0]);  // 数组长度

    for(int i = 0; i < len - 1; i++){
        for(int j = 0; j < len - 1 - i; j++){
            if(arr[j] > arr[j + 1]){
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;  // 数组交换
            }
        }
    }

    for(int i = 0; i < len; i++){
        cout << arr[i] << ' ';
    }
}
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容