//快速排序:思路:采用二分法,取出中间数,数组每次和中间数比较,小的放到左边,大的放右边
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));