选择排序(日志14)

1.工作原理

选择排序( Selection sort)是一种简单直观的排序算法。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

2. 算法步骤

  • (1)首先从原始数组中选择最小(最大)的1个数据,将其和位于第1个位置的数据交换。
  • (2)接着从剩下的n-1个数据中选择次小(次大)的1个元素,将其和第2个位置的数据交换
  • (3)然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大(从大到小)的排序。

3.动图演示

4.代码实现

#include<iostream>
using namespace std;
int main()
{
	int a[] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
	int temp;
	for(int i=0;i<15;i++)
	{
		temp = i;
		for(int j=i+1;j<15;j++)
		{
			if(a[temp]>a[j])
			{
				temp = j;
			}
		}
		if(temp!=i)
		{
			swap(a[i], a[temp]);
		}
	}
	for(int i=0;i<15;i++)
	{
		cout << a[i] << " ";
	}
	return 0;
}

5.稳定性

选择排序是不稳定的排序,因其在排序过程中,会改变原本元素的相对位置。

以5 7 5 3 9 为例,若采用从小到大的排序,首先会对3和第一个位置的5进行交换位置,那在交换位置后,它和原来的5的相对位置就发生了转变,使得前5变成了后5,所以这种排序是不稳定的。

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务