快速排序的思路:

1、选择数组中间数作为基数,并从数组中取出此基数;

2、准备两个数组容器,遍历数组,逐个与基数比对,较小的放左边容器,较大的放右边容器;

3、递归处理两个容器的元素,并将处理后的数据与基数按大小合并成一个数组,返回。
 
代码实现:
let  arr = [85, 24, 63, 45, 17, 31, 96, 50]
function quickSort (arr) {
    if (arr.length <= 1) { return arr; }
  var pivotIndex= Math.floor(arr.length / 2)
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (let index = 0; index < arr.length; index++) {
       if (arr[index]< pivot) {
           left.push(arr[index])
       } else {
           right.push(arr[index])
       }
  }
  return quickSort(left).concat([pivot], quickSort(right))

}
console.log(quickSort (arr))

选择数组中间数作为基数,并从数组中取出此基数;

  var pivotIndex= Math.floor(arr.length / 2)
  var pivot = arr.splice(pivotIndex, 1)[0];

准备两个数组容器,遍历数组,逐个与基数比对,较小的放左边容器,较大的放右边容器

  var left = [];
  var right = [];
  for (let index = 0; index < arr.length; index++) {
       if (arr[index]< pivot) {
           left.push(arr[index])
       } else {
           right.push(arr[index])
       }
  }

递归处理两个容器的元素,并将处理后的数据与基数按大小合并成一个数组,返回

return quickSort(left).concat([pivot], quickSort(right))

 

 

git 地址:  https://gitee.com/guangzhou110/front-end-sorting-algorithm

 

 
 
 
越努力越幸运