zl程序教程

您现在的位置是:首页 >  后端

当前栏目

前端排序算法 - 选择排序算法 (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