采用二分法,取出中間數(shù),數(shù)組每次和中間數(shù)比較,小的放到左邊,大的放到右邊
<script>
var?arr?=?[3,?1,?4,?6,?5,?7,?2];?
????????function?quickSort(arr)?{
????????????if?(arr.length?==?0)?{
????????????????return?[];????//?返回空數(shù)組
????????????}
????????????//?獲取中間數(shù)
????????????var?cIndex?=?Math.floor(arr.length?/?2);
????????????//?console.log(arr.length?/?2);
????????????var?c?=?arr.splice(cIndex,?1);
????????????var?l?=?[];
????????????var?r?=?[];?
????????????for?(var?i?=?0;?i?<?arr.length;?i++)?{
????????????????if?(arr[i]?<?c)?{
????????????????????//?中間數(shù)的左側(cè)
????????????????????l.push(arr[i]);
????????????????}?else?{
????????????????????//?中間數(shù)的右側(cè)
????????????????????r.push(arr[i]);
????????????????}
????????????}
????????????//?這個遞歸
????????????return?quickSort(l).concat(c,?quickSort(r));
????????}
????????//?調(diào)用函數(shù)
????????let?res?=?quickSort(arr);
????????console.log(res);
//結(jié)果為[1,2,3,4,5,6,7]
</script>

從中間數(shù)為2往上一層走就是[2]+3就是[2,3]一直往上走就是[1,2,3,4,5,6,7]