根据数字根排序数字 JavaScript


在这个问题陈述中,我们的任务是根据数字根对数字进行排序,并借助 Javascript 功能实现此问题。因此,我们可以借助 Javascript 中的循环来解决这个问题。

什么是数字根?

给定数字的数字根基本上是其数字的总和。重复计算,直到结果不是一位数。让我们以数字根为例,计算 1234 的数字根,1 + 2 + 3 + 4 = 10 = 1 + 0 = 1。同样,456 的数字根是 6,因为 4 + 5 + 6 = 15 = 1 + 5 = 6。

因此,数字根主要用于数字命理学,并具有不同的象征意义。它们也用于某些数学算法中,例如信用卡号码、ISBN 和其他代码中使用的校验和。

给定问题的逻辑

在给定的问题陈述中,我们必须设计一个程序,根据其数字根对给定的数字进行排序。如果一个数字的数字根较小,则将其按升序排列。因此,数字根较小的数字在排序列表中排在前面。

为了实现这个程序,我们需要首先使用 for 循环计算输入数组中每个数字的数字根。然后,我们将使用嵌套 for 循环和交换算法对数字根数组和输入数组进行排序。

算法

步骤 1 − 在此程序中,我们需要创建一个函数来对数字根进行排序。并在函数中传递一个参数。

步骤 2 − 因为我们需要根据数字根对数字进行排序,所以需要一个数组来保存它们。因此,创建一个空数组。

步骤 3 − 现在,借助 for 循环,我们将检查数字根和计算出的根是否相等。

步骤 4 − 在声明上述内容之后,我们将使用嵌套循环来使用交换技术交换数组元素。并将数字根小于所有其他数字的第一个数字放在前面。

步骤 5 − 函数的最后一步是返回排序后的数组。

步骤 6 − 在下一步中,我们将编写另一个函数来计算数组中每个整数的数字根。

步骤 7 − 现在,我们将创建一个变量来跟踪数字。

步骤 8 − 接下来,我们将使用 while 循环来检查给定数字是否大于 9,如果条件为真,则计算其数字根。

算法代码

//function to sort the digit roots
function digitRootSort(arr) {
   const digitRoots = [];
   for (let i = 0; i < arr.length; i++) {
   digitRoots[i] = calculateDigitRoot(arr[i]);
   }
   for (let i = 0; i < digitRoots.length; i++) {
      for (let j = i + 1; j < digitRoots.length; j++) {
         if (digitRoots[i] > digitRoots[j]) {
            const tempRoot = digitRoots[i];
            digitRoots[i] = digitRoots[j];
            digitRoots[j] = tempRoot;
            const tempNum = arr[i];
            arr[i] = arr[j];
            arr[j] = tempNum;
         }
      }
   }
   return arr;
}
//function to calculate the digit root
function calculateDigitRoot(num) {
   let digitSum = num;
   while (digitSum > 9) {
      digitSum = digitSum.toString().split('').reduce((sum, digit) => sum + parseInt(digit), 0);
   }
   return digitSum;
}
const arr = [13, 24, 32, 96, 102, 104, 98, 211, 998];
console.log(digitRootSort(arr));

复杂度

上述代码的时间复杂度为 O(n²) ,其中 n 是数组的大小。我们使用了嵌套循环进行排序。在代码中,需要将数组中的每个项目与其他项目进行比较,以根据其数字根找出它们的相对顺序。空间复杂度为 O(n) ,因为它使用大小为 n 的数组来存储数字根。

结论

在上面的代码中,我们成功地开发了一个代码来根据数字根对数字进行排序。该代码使用两个函数对数字进行排序。第一个函数确定排序过程,第二个函数计算数组中每个元素的数字根。

更新于:2023年5月18日

173 次查看

启动您的职业生涯

完成课程后获得认证

开始
广告
© . All rights reserved.