「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」
简单选择排序
介绍
简单选择排序 这是十大排序算法里的较为简单且直观的一种排序算法,是容易理解的一种排序方式。
-
简单选择排序的原理就是:双层循环。从第0项开始循环,假设它为最小的元素。然后让这个元素与数组中的下一个元素及以后的元素进行比较,将较小数的数据下标 索引存放下来,每次进行更新这个最小数相对应的下标,直到遍历完,然后进行交换操作。
-
大白话:
就从数组里所有的数据中先找到最小的数据值,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置。循环进行,以此类推,这就是
简单选择排序算法。
它是比较耗时的排序算法,相较于希尔排序,用时方面比 希尔排序算法 花费有20倍左右,比较次数太多了。都说 简单选择排序算法 是不稳定的,但是在我看来也还好,我个人感觉还挺稳定(可能是比较容易理解吧,也可能我没没理解透稳定性的意思)。
下面是动态图的一个演示
步骤
简单选择排序 的步骤:
- 需要双层循环
- 默认第一层循环的第i个元素为最小元素,并将该数的数据下标索引 记录下来。
- 第二层循环的第i+1各元素开始,依次往后与 i 进行比对,获取最小的数的下标索引,存放起来,第二层循环结束,即可进行交换操作。
题目
-
排序数组-912
给你一个整数数组
nums,请你将该数组升序排列。示例1:输入数组: nums = [5,2,3,1],输出结果: [1,2,3,5]
示例2:输入数组: nums = [5,1,1,2,0,0],输出结果: [0,0,1,1,2,5]
代码
- 排序数组 912题
// selectionSort const sortArray = (nums) => { const numsLength = nums.length let minIndex, temp for (let i = 0; i < numsLength - 1; i++) { minIndex = i for (let j = i + 1; j < numsLength; j++) { if (nums[j] < nums[minIndex]) { // 寻找最小的数 minIndex = j // 将最小数的索引保存 } } temp = nums[i] nums[i] = nums[minIndex] nums[minIndex] = temp } return nums }
总结
简单选择排序 优缺点:
优点:一轮比较只需要换一次位置,容易理解,平常思维。
缺点:非常耗时,进行比较的次数较多。