选择排序算法原理:
首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,知道排序完毕。
思想:
循环 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