1.选择排序
1.1不稳定
序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了
1.2.时间复杂度
O(n2)
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 3,2,4,5,1,7 };
for (int i = 0; i < 6; i++)
for (int j = i + 1; j < 6; j++)
if (arr[j] < arr[i])
swap(arr[j], arr[i]);//
for(auto c:arr)
cout<<c<<" ";
cout << endl;
return 0;
}
2.冒泡排序
稳定,O(n2)
for(int i=0;i<arr.size()-1;i++)
for(int j=0;i<arr.size()-i-1;j++)
if(arr[j]>arr[j+1])
swap(arr[j],arr[j+1]);
两两相邻比较,每一轮都是最大或者最小放在最后