冒泡排序:两层for循环,有两种写法,可以从小到大排序(正序),也可从大到小排序(逆序)。
核心思想:每一轮,从待排序数组头部开始,每两个元素比较大小并进行交换,直到一轮完成,将找出的最大或最小元素放置在数组尾部,然后,不断重复上述过程,直到所有元素都排好位置。
代码如下:
算法空间复杂度0(1),时间复杂度0(n^2)
#include "pch.h"
#include <iostream>
#include<vector>
using namespace std;
vector<int> BubbleSortDown(vector<int> height);//逆序
vector<int> BubbleSortUp(vector<int> height);//正序
int main()
{
vector<int> abc = { 9,1,5,6,3,8,2 };
vector<int> aaa = BubbleSortDown(abc);
vector<int> bbb = BubbleSortUp(abc);
for (int i = 0; i < aaa.size(); i++)
{
cout << aaa[i] <<" ";
}
cout << endl;
for (int j=0; j<bbb.size(); j++)
{
cout << bbb[j] << " ";
}
return 0;
}
vector<int> BubbleSortDown(vector<int> hh)
{
if (hh.size() < 2) return hh;
for (int i = 0; i<hh.size()-1; i++)
{
for (int j = 0; j < hh.size() - i - 1; j++)
{
if (hh[j + 1] > hh[j])
{
swap(hh[j + 1], hh[j]);
}
}
}
return hh;
}
vector<int> BubbleSortUp(vector<int> height)
{
if (height.size() < 2) return height;
for (int i = 0; i < height.size()-1; i++)
{
for (int j = 0; j < height.size()-i-1; j++)
{
if (height[j] > height[j+1])
{
int temp = height[j];
height[j] = height[j+1];
height[j+1] = temp;
}
}
}
return height;
}