3.JS排序算法之选择排序

本文详细介绍了JavaScript中的选择排序算法,包括其原理、算法分析、应用实例和适用场景。选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。虽然最坏和平均时间复杂度都是O(n²),但在特定情况下如数据量小且对稳定性无要求时,依然有一定的应用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择排序(selectSort),顾名思义,每次选择最值进行排序

目录

一、选择排序算法原理

二、选择排序算法分析

三、选择排序算法应用实例

四、选择排序的适用场景


一、选择排序算法原理

1.思路

选择排序的实现思路是从未排序序列中找到最小的元素,放到已排序序列的末尾,重复上述步骤,直到所有元素排序完毕。

2.流程描述:(以非递减为例)

1)假设未排序序列的第一个是最小值,记下该元素的位置,从前往后比较
2)若某个元素比该元素小,覆盖最小值的位置
3)重复第二个步骤,直到找到未排序的末尾
4)将未排序元素的第一个元素和最大元素交换位置
5)重复前面几个步骤,直到所有元素都已经排序。

3.举例:

例:5,4,7,2,9,1,6

第一趟排序 :1,4,7,2,9,5,6

第二趟排序: 1,2,7,4,9,5,6

第三趟排序:    1,2,4,7,9,5,6

第四趟排序: 1,2,4,5,9,7,6

······

4.动画演示:

二、选择排序算法分析

最好时间复杂度:

O(n²)  第i趟排序需要n-i次比较。n(n-1)/2

最坏时间复杂度:

O(n²)  第i趟排序需要n-i次比较。n(n-1)/2

平均时间复杂度

O(n²)  

空间复杂度

O(1)  原地排序,辅助空间相对于数据量而言是个常数

稳定性

不稳定。[3,3,1]

三、选择排序算法应用实例

设置未排序最小值下标,外层循环表示趟数,内层循环比较最小值和其它数据大小,比最小值小的更改记录下标,直至循环完毕,交换最小值。

//选择排序
function selectSort(arr){
	var len = arr.length;
	var index;
	for(var i=0;i<len-1;i++){
		index=i;
		for(var j=i+1;j<len;j++){
			if(arr[index]>arr[j]){//寻找最小值
				index=j;//保存最小值的索引
			}
		}
		if(index!=i){
		    var temp =arr[i];
		    arr[i]=arr[index];
		    arr[index]=temp;
	    }
	}
	return arr;
}
var arr = [6,4,9,8,1,3,2]
console.log(selectSort(arr));

四、选择排序的适用场景

选择排序的时间复杂度为O(n²),空间复杂度为O(1),与冒泡排序复杂度相同,但由于每次选出待排序数据中的最小值(增序)或最大值(降序)插入到当前的有序队列中,相对于冒泡排序减少了交换的次数。当数据量不大,且对稳定性没有要求的时候,适用于选择排序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值