js 快速排序 二分排序

//快速排序:思路:采用二分法,取出中间数,数组每次和中间数比较,小的放到左边,大的放右边
var arr = [6, 11, 12, 1, 8, 5, 7];
function quickSort(arr) {
  if (arr.length === 0) {
    return [];  //返回空数组
  }
  var cIndex = Math.floor(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) {
      l.push(arr[i]);
    } else {
      r.push(arr[i]);
    }
  }
  return quickSort(l).concat(c, quickSort(r));
}
console.log(quickSort(arr));

 

// 二分查找,前提是有序数组
function binarySearch(target, arr) {
  var l = 0,
    r = arr.length - 1;
  while (l <= r) {
    var mid = l + parseInt((r - l) / 2);
    if (arr[mid] == target) {
      return mid;
    } else if (target > arr[mid]) {
      l = mid + 1;
    } else if (target < arr[mid]) {
      r = mid - 1;
    }

  }
  return -1;
}
var arr = [1, 2, 4, 6, 8, 9, 11, 34, 67];
console.log(binarySearch(11, arr));

 

posted @ 2021-12-06 10:44  Dz&Ying  阅读(430)  评论(0)    收藏  举报