选择排序

选择排序

编码文章call10242025-03-12 12:16:3945A+A-

选择排序的原理

选择排序(Selection Sort)是一种简单直观的比较排序算法。它的基本思想是:在每一轮排序中,从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

具体步骤如下:

1. 初始状态:无序区为R[1..n],有序区为空。

2. 第i趟排序(i = 1, 2, 3, …, n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

3. n-1趟结束,数组有序化了。

C++ 代码示例

#include

#include

using namespace std;

// 选择排序函数

void selectionSort(vector& arr) {

int n = arr.size();

for (int i = 0; i < n - 1; ++i) {

int minIndex = i;

for (int j = i + 1; j < n; ++j) {

if (arr[j] < arr[minIndex]) {

minIndex = j;

}

}

// 交换arr[i]和arr[minIndex]

swap(arr[i], arr[minIndex]);

}

}

int main() {

vector arr = { 64, 25, 12, 22, 11 };

selectionSort(arr);

for (int num : arr) {

cout << num << " ";

}

cout << endl;

return 0;

}

适用场景分析

1. 数据量较小:当数据规模较小的时候,选择排序简单的实现逻辑使得其代码简洁,并且由于数据量小,算法的时间复杂度劣势不会很明显,所以可以使用。

2. 内存限制严格:选择排序是一种原地排序算法,它在排序过程中只需要很少的额外空间(仅几个临时变量),因此在内存资源有限的环境中,选择排序是一个不错的选择。

3. 对稳定性要求不高:选择排序是不稳定的排序算法,即相同元素的相对顺序在排序后可能会改变。如果应用场景对元素的相对顺序没有严格要求,那么选择排序可以使用。

总的来说,虽然选择排序在大多数情况下效率不如更高级的排序算法(如快速排序、归并排序等),但在特定的场景下,它依然有其独特的优势。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4