C++选择排序

文章目录

  • 前言
  • 一、选择排序的基础知识点
    • 1.选择排序法的排序原理
    • 2.选择排序法的所属类别
    • 3.选择排序法的算法复杂度
  • 二、选择排序法的动态图
  • 三、代码
  • 总结


前言

今天和大家来一起讨论选择排序法。如有不足,望各位多多指正。


以下是本篇文章正文内容。

一、选择排序的基础知识点

1.选择排序法的排序原理

选择排序法是一个比较直观的排序方法,排序原理为:从未排序序列中选择出最小(大)值放入已排序序列之首,再从剩余元素中选最小值放入已排序序列末端。以此类推,循环n-1次便完成排序。

2.选择排序法的所属类别

选择排序法属于“比较类排序

3.选择排序法的算法复杂度

选择排序法最坏的情况为与我们所需的序列完全相反的序列。排序操作分别执行n-1、n-2、n-3…1次,由公式(n-1)(n-1+1)/2得计算次数为(n-1)n/2次。当我们取n为∞时,时间复杂度便为O(n²)。
选择排序法的稳定性为:不稳定
解释:
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
因为a与b是否会互换由写程序的人来决定。

二、选择排序法的动态图

此图片转自“博客园”博主“一像素”的博客。
博客链接 https://www.cnblogs.com/onepixel/p/7674659.html
以GIF的形式可以让大家看的更直观。
C++选择排序_第1张图片

三、代码

#include
#include
using namespace std;
int main()
{
     
	int n, count, i, min, temp, medium;    
	cin >> n;    // 给 n 赋值,有n个数 
	int a[n];    //数组里面存放n个数
	for(count = 0; count < n; count++)
		cin >> a[count];    //输入每个数字

	for(count = 0; count < n; count++)    //过n遍 
	{
     
		min = 9999;    //每次都要初始化一下最小值 
		for(i = count; i < n; i++)    //把所有的数过一遍 i=count的原因是因为前面为的数列已经排好序了
 
		{
     
			if(min > a[i])
			{
     
				min = a[i];    //把最小的数赋值给min
				a[i] = a[count];
				a[count] = min;    //互换值 
			}			 
		}
	} 
	for(count = 0; count < n; count++)
	cout << a[count] << " ";
	return 0;
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了选择排序法的使用。写博客仅想与大家一起交流讨论,相互学习和记录自己的学习经历。若读者有更短、更优、更快的算法以及程序,欢迎大家一起交流!再见!

你可能感兴趣的:(排序,算法,排序算法,c++,c语言)