Computer >> Máy Tính >  >> Lập trình >> Javascript

Chèn một số vào một mảng số được sắp xếp JavaScript

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng số được sắp xếp làm đối số đầu tiên và một số duy nhất làm đối số thứ hai.

Hàm phải đẩy số được chỉ định làm đối số thứ hai vào mảng mà không làm sai lệch việc sắp xếp các phần tử.

Chúng tôi bắt buộc phải làm điều này mà không tạo một mảng khác.

Ví dụ

const arr = [6, 7, 8, 9, 12, 14, 16, 17, 19, 20, 22];
const num = 15;
const findIndex = (arr, val) => {
   let low = 0, high = arr.length;
   while (low < high) {
      let mid = (low + high) >>> 1;
      if (arr[mid] < val) {
         low = mid + 1;
      }else {
         high = mid
      }
   };
   return low;
};
const insertAt = (arr = [], num) => {
   const position = findIndex(arr, num);
   for(let i = position; typeof arr[i] !== 'undefined'; i++){
      // swapping without using third variable num += arr[i];
      arr[i] = num - arr[i];
      num -= arr[i];
   };
   arr.push(num);
};
insertAt(arr, num);
console.log(arr);

Đầu ra

Điều này sẽ tạo ra kết quả sau -

[
   6, 7, 8, 9, 12,
   14, 15, 16, 17, 19,
   20, 22
]