数组的插入排序

let arr = [12, 8, 15, 16, 1, 24];// 1.先抓第一张到手里「handle也需要是一个数组」let handle = [];handle.push(arr[0]);// 2.依次去抓桌面上剩下的牌for (let i = 1; i < arr.length; i++) { // A是当前新抓的牌 let A = arr[i]; // 3.用每一次新抓的牌A和手里的牌handle进行逐一比较「从后向前比」 for (let j = handle.length - 1; j >= 0; j--) { // B是取出来的需要和A进行比较的,手里的某张牌 let B = handle[j]; // 4.如果A>B,需要把新抓的牌A放在B的后面 if (A > B) { handle.splice(j + 1, 0, A); // 已经放在手中了,则没必要在和手里其它牌比了,继续抓下一张牌去 break; } // 5.如果和手里的牌都比完了,发现A没有比手里的任何牌大,我们把A放在最前面即可 if (j === 0) { handle.unshift(A); } }}console.log(handle);
数组的快速排序

const quick = function quick(arr) { // 4.结束条件:如果传递的数组小于一项,则无需再拆了 if (arr.length <= 1) return arr; // 1.取出数组中间项 let middleIndex = Math.round(arr.length / 2), middleValue = arr.splice(middleIndex, 1)[0]; // 2.创建左右两个数组,用原始数组剩下的项和中间项比较,比中间项小的放在左边,大的放在右侧数组中 let arrLeft = [], arrRight = []; for (let i = 0; i < arr.length; i++) { let item = arr[i]; item > middleValue ? arrRight.push(item) : arrLeft.push(item); } // 3.把左边的、中间项、右侧的拼接在一起即可 return quick(arrLeft).concat(middleValue, quick(arrRight));};let arr = [12, 8, 15, 16, 1, 24];arr = quick(arr);console.log(arr);
数组冒泡排序
https://www.yuque.com/go/doc/43757330