Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptのバイナリの1ビット数による整数の並べ替え


整数の配列を唯一の引数として受け取るJavaScript関数を作成する必要があります。

関数は、配列に存在する整数を、バイナリ表現に存在する1に基づいて昇順でソートする必要があります。 2つ以上の数値のバイナリに同じ数の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
]

  1. JavaScriptを使用して10進値が偶数のバイナリ文字列を並べ替える

    問題 長さ3のバイナリ文字列をすべてスペースで区切った文字列を取り込むJavaScript関数を作成する必要があります。 この関数は、数値を昇順で並べ替える必要がありますが、偶数を並べ替え、すべての奇数をそのまま残します。 例 以下はコードです- const str = '101 111 100 001 010'; const sortEvenIncreasing = (str = '') => {    const sorter = (a, b) => {       const findIn

  2. C++で大きな2進数の1ビットの数を見つける

    32ビットの符号なし2進数が与えられた場合、タスクは設定されたビットをカウントすることです。つまり、「1」がその中に存在します。 例 入力: N = 00000000000000100111 出力: 4 説明: 指定された符号なし数値に存在するセットビットの合計は4であるため、出力は「4」として返されます。 この問題を解決するためのアプローチ 符号なしの32ビットの2進数を指定しました。タスクは、そこに存在する「1」の数を数えることです。 指定された2進数に存在する「1」の数をカウントするには、2進数を入力パラメーターとして受け取る組み込みのSTL関数「__builin_po