题解 | #C++冒泡排序#

C++冒泡排序

http://www.nowcoder.com/practice/eb72dada09de43ceacf93f9a143ee321

题目的主要信息:

  • 随机输入6个整数保留到数组中,用冒泡排序对其排序后输出

具体做法:

冒泡排序法的基本原理就是比较相邻元素,不断将较大的元素交换到右边。

对于长度为nn的数组,一共排序n1n-1趟,每一趟都比较相邻元素,将较小的交换到前面较大的交换到后面,于是较大的元素沉到最后,较小的元素不断往前冒。而且因为每趟最大的元射会沉到最后,因此每次最大的元素就相当于排好了位置,因此每趟排序长度就会随着趟数减1,不用再排上一趟排好的最末元素。

alt

#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;
}

复杂度分析:

  • 时间复杂度:O(n2)O(n^2)nn为数组长度,冒泡排序两层循环,最坏情况下是逆序,一共比较(n(n1)/2)(n*(n-1)/2)
  • 空间复杂度:O(1)O(1),无额外空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论

相关推荐

12-02 20:08
已编辑
门头沟学院 后端工程师
notbeentak...:孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞 评论 收藏
分享
程序员牛肉:你这简历有啥值得拷打的?在牛客你这种简历一抓一大把,也就是个人信息不一样而已。 关键要去找亮点,亮点啊,整个简历都跟流水线生产出来的一样。
点赞 评论 收藏
分享
评论
27
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务