居家旅行、萌新必备九大经典算法之——选择排序

居家旅行、萌新必备九大经典算法之——选择排序

作为基础三大排序算法之一的选择排序(另外两个为冒泡排序与选择排序),因其平易近人暴力枚举最棒了而深受萌新们的喜爱。所以接下来我准备为大家详细的讲述一下选择排序,希望能让大家有所收获。

选择排序描述

选择排序是一种简单直观的排序算法。快乐就完事了

它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

选择排序是不稳定的排序方法,其时间复杂度为O(n^2)。

个人理解

看完官方描述,你可能会感觉比较难理解,其实,选择排序说白了就是一种暴力镶嵌循环暴力最棒了, 第一层循环遍历数组的每一个元素,第二层循环对数组的每一个元素进行“筛选”,筛出其中最小元素的下标,然后进行喜闻乐见的两个数交换
(temp = a ; a = b ; b = temp ; )
然后一直重复这个过程,直到数组结束。

附图片如下:

在这里插入图片描述

看完有没有一种豁然开朗的感jio呢?
如果可能,可以尝试一下自己编写一下代码后再来看看头秃博主的代码哦

#include <iostream>
using namespace std;
const int index = 10;
//index 为数组的元素个数
int main()
{
 	int a[index];
 	//遍历读取每一个数组元素
 	for(int i = 0; i < index; ++i)
   		scanf("%d",&a[i]);
   	for(int i = 0; i < index; ++i)
 	{	//min为数组中最小元素的下标
  		int min = i;
  		for(int j = i; j < index; ++j)
  		{	//循环更新最小元素的下标 
   			if( a[j] < a[min])
    				min = j;
  		}
  		//喜闻乐见的交换环节
		int temp = a[i];
  		a[i] = a[min];
  		a[min] = temp; 
 	}
 	//循环输出每一个数组元素
	for(int i = 0; i < index; ++i)
   		printf("%d\t",a[i]);
   	//完结撒花!!!
 	return 0;
}

如果感觉这篇博客不错的话,不凡点赞加关注??(拜托啦,这对我真的很重要)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值