【白话排序算法】选择排序法

选择排序思路非常简单。我举个简单的例子。比如大家上学拍毕业照,同学们需要由高到低依次站好。这时候老师会从同学们中选择最高的站在某一边,然后选择次高的再次站在他的旁边,最后以此类推。

所以选择排序的核心思想是每一趟排序都是选择一个最大/最小的值。选择排序也因此得名。

在这里插入图片描述
图片来自于网络,纯属打酱油,与本文内容完全不符…

下面我来通过图示来直观的展示整个过程。
在这里插入图片描述
如上图所示。由于选择排序会发生跨元素之间的交换,所以他是一种不稳定的排序方法。

下面我将使用JavaScript来实现一下选择排序

javascript">function selectSort(seq) {
	let i, j, temp, d; // d 标记最小元素的索引
	for (i=0;i<seq.length - 1;i++) {
		d = i;
		// 遍历寻找最小元素的索引
		for(j=i;j<seq.length;j++) {
			if (seq[j] < seq[d]) {
				d = j;
			}
		}
		// 找到的最小元素与当前的元素交换。这会让该排序方式变成不稳定排序
		temp = seq[i];
		seq[i] = seq[d];
		seq[d] = temp;
	}
}
selectSort(seq)
console.log(seq) // [1, 2, 3, 4, 5, 6, 6, 7, 9 ]

最后,选择排序因为涉及到两次循环,估计时间复杂度为O(n^2)。


http://www.niftyadmin.cn/n/1383061.html

相关文章

计算机学科国际会议排名

2019独角兽企业重金招聘Python工程师标准>>> 序号 会议名称 会议介绍 代表领域 1 ACM SIGCOMM: ACM Conf on Communication Architectures, Protocols & Apps ACM的旗舰会议之一&#xff0c;也是网络领域顶级学术会议&#xff0c;内容侧重于有…

爬取《Five Hundred Miles》在网易云音乐的所有评论

本文原创发布于微信公众号「极客猴」&#xff0c;欢迎关注第一时间获取更多原创分享 在使用 Ajax 技术加载数据的网站中&#xff0c; JavaScript 发起的 HTTP 请求通常需要带上参数&#xff0c;而且参数的值都是经过加密的。如果我们想利用网站的 REST API 来爬取数据&#xff…

(keymap设置及eclipse常用快捷键总结)

设置pycharm为Eclipse快捷键后使用总结&#xff1a; Ctrl O 根据name模糊查找当前文件中类、方法Alt (向左箭头或者向右箭头) &#xff0c;回退or前进到到之前查看或者编辑处Alt (向上箭头或者向下箭头) &#xff0c;将当前方法整体往下或者往上移动CtrlShiftR 根据name模糊…

从疫苗事件和苹果后门,看恐慌情绪为何合理

疫苗事件爆发后&#xff0c;许多人的朋友圈经历了戏剧性的一天&#xff0c;从《疫苗之殇》刷屏有人喊出拒绝疫苗&#xff0c;到和菜头抨击转发者属于“文盲”&#xff0c;再到王五四的捍卫恐慌权&#xff0c;由于传播载体的即使便利性&#xff0c;以往要持续数天的战斗进程压缩…

ER_NOT_SUPPORTED_AUTH_MODEError / MySQL 8 / node

在MySQL中执行以下语句 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY password;flush privileges;mysql_native_password 这一句是指明加密方式。因为MySQL8使用了新的加密方式。这是告诉MySQL使用老的加密方式。 另外&#xff0c;如果以上还不行&…

【算法编程】变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路&#xff1a;思路一&#xff1a;最后跳一步的跳法有f(n-1)种&#xff0c;最后跳两步的跳法有f(n-2)种&#xff0c;……&#xff0c;最…

lamp(源码)平台搭建

环境&#xff1a;centos-6.4x86-64所需软件&#xff1a;httpd-2.4.4.tar.bz2apr-1.4.6.tar.gz apr-util-1.5.1.tar.gz php-5.5.8.tar.bz2 mysql-5.6.15.tar.gz共享链接&#xff1a;http://pan.baidu.com/s/1i32vG3r http://pan.baidu.com/s/1pJFGBlL 对于lamp平台主要是想使用最…

python在windows平台的pip安装package时的编译问题

在安装pcapy时&#xff0c;出现以下错误&#xff1a; building pcapy extension error: Microsoft Visual C 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27 原来这世界上有个东西叫&#xff1a; Microsoft Visual C Compiler for Py…