排序方法
(一)//原生双重for循环排序 (冒泡排序)
for (let i = 0; i < arr.length; i++) {
for (let z = 0; z < arr.length; z++) {
if (arr[i] < arr[z]) {
[arr[i], arr[z]] = [arr[z], arr[i]]
}
}
}
console.log(arr);
(二)原生利用对象
let newarr = []
let obj = {}
arr.forEach(function (item) {
obj[item] = 0
})
for (let i = 0; i < arr.length; i++) {
arr.forEach(function (item) {
if (arr[i] > item) {
obj[arr[i]]++
}
})
}
console.log(obj);
for (const key in obj) {
newarr[obj[key]] = key
}
console.log(newarr);
(三)sort()方法
console.log(arr.sort(function(a,b){
return a-b
}));
(四) 参考插入排序
let arr = [10, 20, 6, 8, 29, 4]
let newarr = []
newarr.push(arr[0])
for (let i = 1; i < arr.length; i++) {
let j = 0
while (arr[i] > newarr[j]) {
j++
}
newarr.splice(j, 0, arr[i])
}
console.log(newarr);
(五)选择排序
每次找到最小的,放在最前面,然后外层循环加一,因为最小的已经不需要找了,再找第二小的放在最前面.每一次把第i项当成默认的最小项,也就是从第i项开始查找,因为i项之前的都已经排好了,最后交换位置,即把最小的交换到i的位置.也就是递增
let arr = [10, 20, 6, 8, 29, 4]
for (let i = 0; i < arr.length - 1; i++) {
let mindex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[mindex]) {
mindex = j
}
}
[arr[i], arr[mindex]] = [arr[mindex], arr[i]]
}
console.log(arr);