题意整理。

  • 键盘随机输入6个整数,保存到数组中。
  • 使用冒泡排序对数组中的元素进行排序,输出排序后的元素。

方法一(冒泡排序)

1.解题思路

  • 外层循环遍历前len-1个元素,内层循环遍历当前元素后面所有元素。
  • 如果后面元素比当前元素小,则交换位置。

动图展示: alt

2.代码实现

#include <iostream>
using namespace std;

int main() {

    int arr[6] = { 0 };
    int len = sizeof(arr) / sizeof(int);
    
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    
    //外层循环遍历前len-1个元素
    for(int i=0;i<len-1;i++){
        //内层循环遍历当前元素后面所有元素
        for(int j=i+1;j<len;j++){
            //如果后面元素比当前元素小,则交换位置
            if(arr[i]>arr[j]){
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }

    for (int i = 0; i < len; i++) {
        cout<<arr[i]<<" ";
    }
    return 0;
}

3.复杂度分析

  • 时间复杂度:循环最多执行n(n1)/2n*(n-1)/2n(n1)/2次,所以时间复杂度为O(n2)O(n^2)O(n2)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)O(1)