跳转至

排序——冒泡排序

冒泡排序也成为气泡排序。冒泡排序法的思想是:从头到尾比较相邻的两个元素,将小的换到前面,大的换到后面。经过了从头到尾的一趟比较,就把最大的元素交换到了最后一个位置。这个过程称为一趟起泡。然后再从头开始到倒数第二个元素进行第二趟起泡。经过了第二趟比较,又将第二大的元素放到了倒数第二个位置……依此类推,经过第n-1趟起泡,将倒数第n-1个大的元素放人第二个单元。此时,最小的元素就放在了第一个单元,完成排序。

#include <iostream>
#include <vector>
using namespace std;


template<class T>
void bubbleSort(vector<T> &a)
{
    for(int i = 1; i < a.size(); ++i){
        bool flag = false;

        for(int j = 0; j < a.size() - i; ++j){
            if(a[j] > a[j + 1]){
                swap(a[j], a[j + 1]);
                flag = true;
            }
        }
        if(!flag) break;
    }
}


int main()
{
    vector<int> a = {9,8,7,6,5,4,3,2,1};

    bubbleSort(a);

    for(int i = 0; i < a.size(); ++i)
        cout << a[i] << '\t' ;

    return 0;
}

典型应用:

  • 一本通-1310:【例2.2】车厢重组(冒泡排序)