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

数字根ソートアルゴリズムJavaScript


ある正の整数の数字根は、そのすべての数字の合計として定義されます。整数の配列が与えられます。 aの数字根がbの数字根以下の場合、aがbの前に来るようにソートする必要があります。 2つの数字が同じ数字根を持っている場合、(通常の意味で)小さい方が最初に来るはずです。たとえば、4と13は同じ数字根を持っていますが、4 <13であるため、両方が存在するすべての数字根の並べ替えでは、4が13の前になります。

たとえば、

for a = [13, 20, 7, 4],
the output should be [20, 4, 13, 7].

この問題のコードを書いてみましょう-

これを2つの関数に分割します。数値の桁の合計をカウントする再帰関数と、桁の合計に基づいて要素を並べ替える並べ替え関数です。

このためのコードは-

になります

const arr = [54, 23, 8, 89, 26];
const recursiveCount = (num, count = 0) => {
   if(num){
      return recursiveCount(Math.floor(num/10), count+num%10);
   };
   return count;
};
const sorter = (a, b) => {
   const countDifference = recursiveCount(a) - recursiveCount(b);
   return countDifference || a - b;
};
arr.sort(sorter);
console.log(arr);

出力

コンソールの出力は-

になります
[ 23, 8, 26, 54, 89 ]

  1. JavaScriptのSort()メソッド

    JavaScriptのsort()メソッドは、配列のソートに使用されます。並べ替えの順序は、アルファベット、数字、昇順、降順のいずれかです。 以下は、sort()メソッドのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /&

  2. JavaScriptのArray.prototype.sort()。

    JavaScript Array.prototype.sort()メソッドは、配列の並べ替えに使用されます。並べ替えの順序は、アルファベット、数字、昇順、降順のいずれかです。 以下は、Array.prototype.sort()メソッドのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-