冒泡排序(C++)

冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。
(图片来自菜鸟教程冒泡排序
在这里插入图片描述

复杂度稳定性

时间复杂度

最好情况是数据已经正序,最坏情况是数据反序
O ( n 2 ) O(n^2) O(n2)

空间复杂度

不包括原始数据存储过程,所以空间复杂度是 O ( 1 ) O(1) O(1)

稳定性

稳定

代码

class Solution {
public:
    void bubbleSort(vector<int>&nums){
        int i,j;
        for(i=0;i<nums.size()-1;i++){
            bool flag=false;
            for(int j=nums.size()-1;j>i;j--){
                if(nums[j-1]>nums[j]) {
                    swap(nums[j-1],nums[j]);
                    flag=true;
                }
            }
            if(flag==false) return;
        }
    }
    vector<int> sortArray(vector<int>& nums) {
        bubbleSort(nums);
        return nums;
    }
};

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值