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

Sắp xếp số nguyên theo số bit 1 trong nhị phân trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số nguyên làm đối số duy nhất.

Hàm sẽ sắp xếp các số nguyên có trong mảng theo thứ tự tăng dần dựa trên các số 1 có trong biểu diễn nhị phân của chúng. Nếu hai hoặc nhiều số có cùng số lượng 1s trong hệ nhị phân của chúng, chúng phải được sắp xếp theo thứ tự tăng dần theo độ lớn của chúng.

Ví dụ -

Nếu mảng đầu vào là -

const arr = [34, 37, 23, 89, 12, 31, 23, 89];

Khi đó, mảng đầu ra sẽ là -

const output = [34, 12, 37, 23, 89, 23, 89, 31];

Ví dụ

Sau đây là mã -

const arr = [34, 37, 23, 89, 12, 31, 23, 89];
const sortByBinary = (arr = []) => {
   const calculateOne = (str = '') => {
      let res = 0;
      for(let i = 0; i < str.length; i++){
         if(str[i] === '1'){
            res++;
         };
      };
      return res;
   }
   const sorter = (a, b) => {
      const firstCount = calculateOne((a >>> 0).toString(2));
      const secondCount = calculateOne((b >>> 0).toString(2));
      return firstCount - secondCount;
   };
   arr.sort(sorter);
};
sortByBinary(arr);
console.log(arr);

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[
   34, 12, 37, 23,
   89, 23, 89, 31
]