Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 바이너리의 1비트 수로 정수 정렬하기

<시간/>

정수 배열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.

이 함수는 배열에 있는 정수를 이진 표현에 있는 1을 기준으로 오름차순으로 정렬해야 합니다. 2개 이상의 숫자가 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
]