#include <iostream>
#include <vector>
using namespace std;
void swap(int &a, int &b) { a = a^b; b = a^b; a = a^b; }
//冒泡排序
void maopao(vector<int>& vec)
{
for (int i = 0; i < vec.size(); i++)
{
for (int j = 0; j < vec.size() - 1 - i; j++)
{
if (vec[j]>vec[j + 1])
{
swap(vec[j], vec[j + 1]);
}
}
}
for (auto it : vec)
cout << it << " ";
cout << endl;
}
//插入排序
void charu(vector<int> &vec)
{
for (int i = 1; i < vec.size(); i++)
{
for (int j = i - 1; j >= 0; j--)
{
if (vec[j]>vec[j + 1]) swap(vec[j],vec[j+1]) ;
else break;
}
}
for (auto it : vec)
cout << it << " ";
cout << endl;
}
//选择排序
void xuanze(vector<int> &vec)
{
for (int i = 0; i < vec.size()-1; i++)
{
int min=i;
for (int j = i+1; j < vec.size(); j++)
{
if (vec[j] < vec[min])
{
min = j;
}
}
if (i!=min)
swap(vec[i], vec[min]);
}
for (auto it : vec)
cout << it << " ";
cout << endl;
}
int main()
{
vector<int> vec{ 2, 4, 1, 8, 6, 9, 0, 3, 7 };
maopao(vec);
vec={ 2, 4, 1, 8, 6, 9, 0, 3, 7 };
charu(vec);
vec = { 2, 4, 1, 8, 6, 9, 0, 3, 7 };
xuanze(vec);
return 0;
}
是否原地排序 | 稳定 | 最好 | 最坏 | 平均 | |
冒泡排序 | 是 | 是 | O(n) | O(n^2) | O(n^2) |
插入排序 | 是 | 是 | O(n) | O(n^2) | O(n^2) |
选择排序 | 是 | 否 | O(n^2) | O(n^2) | O(n^2) |