前端排序算法 - 选择排序算法 (4)
2023-09-11 14:22:18 时间
选择排序算法原理:
首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,知道排序完毕。
思想:
循环 i 次 数组中就有 i个有序元素
里层循环 应该从 i+ 1 开始 , 并且 数组中 第 i 个 为 最小值
演示gif :
实现代码:
function selectionSort(arr) { var len = arr.length; var minIndex, temp; for(var i = 0; i < len - 1; i++) { minIndex = i; for(var j = i + 1; j < len; j++) { if(arr[j] < arr[minIndex]) { // 寻找最小的数 minIndex = j; // 将最小数的索引保存 } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; } let arr = [85, 24, 63, 45, 17, 31, 96, 50] selectionSort(arr) console.log(arr)
每次设置 最小索引值 为 i
minIndex = i;
因为循环 i 次后 前面 i 个是有序的 所以 里面的循环 应该从 i + 1 个开始
for(var j = i + 1; j < len; j++) { if(arr[j] < arr[minIndex]) { // 寻找最小的数 minIndex = j; // 将最小数的索引保存 } }
每次循环得到最小的索引值 再用交换方法进行数据交换
temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp;
git 地址 : https://gitee.com/guangzhou110/front-end-sorting-algorithm
相关文章
- B 站疯传!堪称最强!计算机、网络、算法知识总结电子书下载!
- 算法手撕代码76~80
- LMS算法自适应均衡器实验
- 卡尔曼滤波算法的代码验证
- KDnuggets调查|数据科学家最常用的10种算法
- 【算法刷题】贪心算法题型及方法归纳
- 119、【回溯算法】leetcode ——131. 分割回文串:分割问题(C++版本)
- 华为OD机试 - 最少停车数(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -Excel 单元格数值统计(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 猴子爬山(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 前端排序算法 - 希尔排序算法 (6)
- 前端排序算法 - 插入排序算法 (5)
- 计算机网络课程实验4——编程实现路由算法(迪杰斯特拉算法)