题目的主要信息:
- 随机输入6个整数保留到数组中,用冒泡排序对其排序后输出
具体做法:
冒泡排序法的基本原理就是比较相邻元素,不断将较大的元素交换到右边。
对于长度为的数组,一共排序趟,每一趟都比较相邻元素,将较小的交换到前面较大的交换到后面,于是较大的元素沉到最后,较小的元素不断往前冒。而且因为每趟最大的元射会沉到最后,因此每次最大的元素就相当于排好了位置,因此每趟排序长度就会随着趟数减1,不用再排上一趟排好的最末元素。
#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];
}
for(int i = 0; i < len - 1; i++){
//第i趟比较
for(int j = 0; j < len - i - 1; j++){
//开始进行比较,如果arr[j]比arr[j+1]的值大,那就交换位置
if(arr[j] > arr[j + 1]){
swap(arr[j], arr[j + 1]);
}
}
}
for(int i = 0; i < len; i++) //输出
cout << arr[i] << " ";
return 0;
}
复杂度分析:
- 时间复杂度:,为数组长度,冒泡排序两层循环,最坏情况下是逆序,一共比较次
- 空间复杂度:,无额外空间