<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> /* 3.快速排序 排序思路: 1.取出【删除】数组中间项 2.将删减后的新数组与 刚取出来的中间项逐个进行比较 3.设置两个空数组,若比中间项小,则放入一个空数组中,若比中间项大,则放入另一个空数组中。 4.反复比较,数组拼接 */ var arr = [22, 5, 3, 16, 34, 61, 7]; var arr2 = [30,6,12,55,47,9,8]; function quickSort(a) { // a 形参 // 对要排序的数组进行长度判断,如果数组内只剩下一个数字了,就不需要折半比较了 if(a.length <=1){ return a; } var one = a.splice(Math.floor(a.length / 2), 1)[0]; // 中间值 var left = []; var right = []; for (var i = 0; i < a.length; i++) { if (a[i] < one) { // 比中间值小的数字 添加到left数组中 left.push(a[i]); } else { right.push(a[i]); } } return quickSort(left).concat(one, quickSort(right)); // 递归 反复调用自己的函数 } console.log(quickSort(arr2)); </script> </body> </html>