选择排序(Selection Sort)

选择排序不是稳定的排序算法,其算法的时间复杂度为 \(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
未经允许不得转载:一亩三分地 » 选择排序(Selection Sort)
评论 (0)

3 + 7 =