选择排序不是稳定的排序算法,其算法的时间复杂度为 \(O(n^2)\),其算法基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
#include <iostream>
using namespace std;
// 升序
void selection_sort(int arr[], int len)
{
for (int i = 0; i < len; ++i)
{
// 假设 i 下标元素为最小值
int min = i;
for (int j = i + 1; j < len; ++j)
{
if (arr[j] < arr[min])
{
min = j;
}
}
// 如果 min 不等于 i,则说明最小值不是 i, 需要交换
if (min != i)
{
arr[i] ^= arr[min];
arr[min] ^= arr[i];
arr[i] ^= arr[min];
}
}
}
int main()
{
int arr[] = { 6, 8, 5, 7, 4 };
selection_sort(arr, sizeof(arr) / sizeof(int));
for (auto v : arr) cout << v << " ";
cout << endl;
return 0;
}
程序执行结果:
4 5 6 7 8

冀公网安备13050302001966号