选择排序不是稳定的排序算法,其算法的时间复杂度为 \(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