根據數字根排序數字 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 的陣列來儲存數字根。
結論
在上面的程式碼中,我們成功地開發了一個程式碼來根據數字根對數字進行排序。該程式碼使用兩個函式對數字進行排序。第一個函式確定排序過程,第二個函式計算陣列中每個元素的數字根。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP