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

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

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

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

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

下面我将使用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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值