自己想的数组排序:只做记录不做参考
从第一次开始比较找出数组中最小数,取出来放入一个新数组并且在原始数组中删掉这个最小数,依次类推找到最后一个(性能不好)
var arr = [45, 90, 32, 45, 33, 2, 90, 100, 36];
var loop = arr.length;
var target = [];
for (var i = 0; i < loop; i++) {
var min = arr[0], k = 0;
for (var j = 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j]
k = j;
}
}
arr.splice(k, 1);
target.push(min);
}
console.log(target)
网上推荐:
1,冒泡排序:比较相邻两个数大小,若第一个数比第二个数大,则交换位置,第一次循环能确定一个最大值,以此类推
var arr = [45, 90, 32, 45, 33, 2, 90, 100, 36];
for (let i = 1; i < arr.length; i++) {
for (let j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp
}
}
}
console.log(arr)
图片辅助:
2,选择排序:假设数组第一个元素是最小值,对应索引是minIndex, 让该值与剩余值做比较,如果有小于该值则改变minIndex指向,让minIndex指向最小索引,用minIndex索引指向的值与剩余值作比较,第一轮比较完成后确定给一个最小的minIndex,让其值和第一个元素交换位置;假设数组第二个元素是最小值,以此类推
var arr = [45, 90, 32, 45, 33, 2, 90, 100, 36];
for (let i = 0;i < arr.length - 1; i++){
var minIndex = i;
for(let j = i + 1;j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}
let temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
console.log(arr)
图片辅助: