快速排序算法
先来显示一下它的过程
1.给一个数组 10,22,3,90,8,6 从小到大 快速排序
2.选取它的第一个值作为flag 其他数组以此做排序,比它大的放右边,比它小的放左边。[10, 22, 3, 90, 8, 6] => { 3, 8, 6 } 10 { 22, 90 }
3.上一步得到的数组是{ 3, 8, 6 } 10 { 22, 90 } ,接下来对 左边,和右边的两个数组,进行类似的排序。
[ 3,8,6 ] 10 [ 22, 90 ] => [3, {8,6} ] 10 [ 22 ,{ 90}] ,
4.上面一步得到 [3, {8,6} ] 10 [ 22 ,{ 90}] ,下面对 里面的 {8, 6} 排序,{90}只有一个值,不用排序了。
[3, {8,6} ] 10 [ 22 ,{ 90}] => [3, {6, 8} ] 10 [ 22 ,{ 90}] .结束 这样就得出 最后结果
写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var arr = [10, 22, 3, 90, 8, 6]; function sort(arr){ if (arr.length <= 1) return arr; var middle = arr[0]; var left = []; var right = []; for ( var i = 1; i < arr.length; i++){ if (arr[i] < middle){ left.push(arr[i]); } if (arr[i] > middle){ right.push(arr[i]); } } return sort(left).concat(middle).concat(sort(right)); } console.log(sort(arr)); |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步