// 最基础的版本
function selectionSort(arr) {
const len = arr.length;
let minIndex, temp;
for (let i = 0; i < len - 1; i++) {
minIndex = i;
for (let 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;
}
function selectionSort(arr) {
const len = arr.length
for(let i = 0;i < len; i++) {
let minIndex = i
for(let j = i + 1; j < len; j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j
}
}
let empty = arr[minIndex]
while(minIndex > i) {
arr[minIndex] = arr[minIndex - 1]
minIndex--
}
arr[i] = empty
}
return arr
}
function selectionSort(arr) {
let left = 0;
let right = arr.length - 1
while(left <= right) {
let minIndex = left
let maxIndex = right
for(let i = left; i <= right; i++) {
if(arr[i] < arr[minIndex]) {
minIndex = i
}
if(arr[i] > arr[maxIndex]) {
maxIndex = i
}
}
let minEmpty = arr[minIndex]
arr[minIndex] = arr[left]
arr[left] = minEmpty
// 只剩最后一个的时候
if(left == maxIndex) {
maxIndex = minIndex
}
let maxEmpty = arr[maxIndex]
arr[maxIndex] = arr[right]
arr[right] = maxEmpty
console.log(arr)
left++
right--
}
}
const arr = [3,8,9,10,6,4]
console.log(selectionSort(arr))
javascript的选择排序
最新推荐文章于 2022-04-02 13:42:49 发布