冒泡排序(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;
    }
};

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qaaaaaaz/article/details/130056471
今日推荐