快速排序

1: 快速排序的思路

   1.1: 先将数列中取出一个数作为基准数

   1.2:  先将比这个数小的全部放到它的左边, 大于或者等于它的数全部放到它的右边

   1.3:  在左区间重复第二步,  直到各个区间只有一个数.

   1.4: 在将有序的区间合并起来, 这样这个数组就是有序排列了

let arr = [31, 23, 34, 2, 13, 234]

function qulickSort (arr) {
  // 1; 找基准数, 并且将比基准数小的全部放到左边(左数组)
  //  大于大于基准数的全部放到右边(右数组)
  let base_num = arr[0];  // 基准数
  let left_arr = [];  // 左数组
  let right_arr = [];  // 右数组
  for (let i=1, i<arr.lenght, i++) {
     // 比基准数小的都放在左数组, 否则都放在右数组
     if(arr[i]<base_num) {
       left_arr.push(arr[i]);
     }else {
       right_arr.push(arr[i]);
     }
  }
  // 2: 对左数组分别进行快排. 返回排序好的左右数组
  // (条件: 就是对数组中的元素要大于等于2个)
  if(left_arr.length>2)  left_arr=qulickSort(left_arr); 
  if(rigth_arr.length>2) rigth_arr=qulickSort(rigth_arr); 

  // 3: 合并排序好之后的左数组, 基准数, 排序好的右数组, 并且返回
  return left_arr.concat(base_num, rigth_arr)
}

let res=qulickSort(arr);
console.log(res);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值