根据二进制中 1 的数量对 JavaScript 中的整数进行排序


我们需要编写一个 JavaScript 函数,它接收一个整数数组作为唯一参数。

这个函数应该根据二进制表示中存在的 1 的数量对数组中存在的整数进行递增排序。如果两个或更多数字在它们的二进制中具有相同数量的 1,那么它们应该根据它们的大小按递增顺序排序。

例如 -

如果输入数组是 -

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

那么输出数组将是 -

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

示例

以下是代码 -

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);

输出

以下是控制台输出 -

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

更新时间: 22-Jan-2021

471 查看

开启你职业生涯的大门

完成该课程即可获得认证

开始
广告
© . All rights reserved.