Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเรียงลำดับจำนวนเต็มตามจำนวน 1 บิตในไบนารีใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเป็นอาร์กิวเมนต์เท่านั้น

ฟังก์ชันควรจัดเรียงจำนวนเต็มที่มีอยู่ในอาร์เรย์ในลำดับที่เพิ่มขึ้นโดยยึดตาม 1 ที่มีอยู่ในการแทนค่าไบนารี หากจำนวนตั้งแต่สองตัวขึ้นไปมีจำนวน 1s เท่ากันในเลขฐานสองของพวกมัน ควรจัดเรียงตามลำดับที่เพิ่มขึ้นตามขนาดของมัน

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

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
]