1. const array = [0, 3, 6, 17, 35, 100, 98, 66, 88, 58, 23, 45, 45, 34, 11];
    2. function quickSort(array) {
    3. if (array.length <= 1) {
    4. return array;
    5. }
    6. const midIndex = Math.floor(array.length / 2);
    7. const mid = array.splice(midIndex, 1)[0];
    8. const left = [];
    9. const right = [];
    10. for (let i = 0; i < array.length; i++) {
    11. if (array[i] < mid) {
    12. left.push(array[i]);
    13. } else {
    14. right.push(array[i]);
    15. }
    16. }
    17. return quickSort(left).concat([mid], quickSort(right));
    18. }
    19. function binarySearch(array, search, pos = 0) {
    20. if (!Array.isArray(array)) throw new Error(`params type error`);
    21. const len = array.length;
    22. const midIndex = Math.floor((len - 1) / 2);
    23. if (array[midIndex] === search) {
    24. console.log(`${search} is at ${pos + midIndex}`);
    25. } else if (array[midIndex] < search) {
    26. return binarySearch(array.slice(midIndex + 1), search, pos + midIndex + 1);
    27. } else if (array[midIndex] > search) {
    28. return binarySearch(array.slice(0, midIndex), search, pos);
    29. } else {
    30. console.log(`no found ${search}`);
    31. }
    32. }
    33. const sortArray = quickSort(array);
    34. binarySearch(sortArray, 51);
    35. binarySearch(sortArray, 66);