JavaScript矩陣排序程式
使用JavaScript對給定矩陣進行排序是程式設計中的一個基本操作。排序是將集合或矩陣的元素按特定順序排列的過程。它對於提高搜尋和其他操作的效率至關重要。
在本文中,我們將討論如何使用JavaScript程式語言對給定矩陣進行排序。
示例
給定一個n x n矩陣,其順序稱為“嚴格順序”。在嚴格順序中,矩陣的每一行都必須按升序排序,並且對於任何行i(其中1 <= i <= n-1),該行的第一個元素必須大於或等於前一行(i-1)的最後一個元素。
Input: mat[] = [5, 4, 7] [1 3, 8] [2, 9, 6] Output: mat[] [1, 2, 3] [4, 5, 6] [7, 8, 9]
方法
為了使用JavaScript對給定矩陣進行排序,我們將使用一種稱為“氣泡排序”的排序演算法。“氣泡排序”演算法是一個簡單的演算法,它反覆遍歷列表或矩陣,比較相鄰元素,如果它們順序錯誤則交換它們。該演算法的名字來源於較小的元素冒泡到列表或矩陣頂部的過程。
演算法
步驟1 - 從第一行到倒數第二行開始迭代矩陣的行。
步驟2 - 對於每一行,從第一列到倒數第二列迭代矩陣的列。
步驟3 - 對於每個單元格,將其與右側和下方的單元格進行比較。
步驟4 - 如果右側或下方的單元格小於當前單元格,則交換這兩個單元格。
步驟5 - 繼續迭代,直到到達矩陣的末尾。
步驟6 - 重複上述過程,直到在一次迭代中沒有進行交換。
步驟7 - 矩陣現在已排序。
實現
我們將使用氣泡排序演算法來實現上述使用JavaScript的演算法。程式接收一個稱為矩陣的二維陣列,其中每個子陣列代表矩陣的一行。程式使用氣泡排序演算法將矩陣中的元素按升序排序。
氣泡排序透過比較陣列中的相鄰元素並在它們順序錯誤時交換它們來工作。該演算法重複此過程,直到整個陣列排序完畢。在此程式中,使用兩個巢狀迴圈來遍歷矩陣並比較相鄰元素。
程式首先初始化兩個變數'rows'和'cols'分別儲存矩陣的行數和列數。然後,它設定一個do-while迴圈,該迴圈將持續迭代,直到不再進行交換。
在迴圈內,兩個巢狀的for迴圈遍歷矩陣並比較相鄰元素。如果兩個相鄰元素順序錯誤,則交換它們,並將'swapped'變數設定為true。如果沒有進行交換,則迴圈終止。
然後,程式返回排序後的矩陣。程式透過將未排序的矩陣傳遞給'bubbleSort'函式,對其進行排序,然後將未排序和已排序的矩陣都列印到控制檯來進行測試。現在讓我們編寫程式碼並執行它!
示例
function bubbleSort(matrix) {
let rows = matrix.length;
let cols = matrix[0].length;
let swapped;
do {
swapped = false;
for (let i = 0; i < rows - 1; i++) {
for (let j = 0; j < cols - 1; j++) {
if (matrix[i][j] > matrix[i][j + 1]) {
let temp = matrix[i][j];
matrix[i][j] = matrix[i][j + 1];
matrix[i][j + 1] = temp;
swapped = true;
}
if (matrix[i][j] > matrix[i + 1][j]) {
let temp = matrix[i][j];
matrix[i][j] = matrix[i + 1][j];
matrix[i + 1][j] = temp;
swapped = true;
}
}
}
} while (swapped);
return matrix;
}
// Testing the function
let matrix = [
[5, 4, 3],
[2, 1, 0],
[8, 7, 6]
];
console.log("Unsorted Matrix:");
for (let i = 0; i < matrix.length; i++) {
console.log(matrix[i]);
}
matrix = bubbleSort(matrix);
console.log("Sorted Matrix:");
for (let i = 0; i < matrix.length; i++) {
console.log(matrix[i]);
}
結論
總而言之,我們討論瞭如何使用JavaScript中的氣泡排序演算法對給定矩陣進行排序。該程式透過比較相鄰元素並在必要時交換它們來對矩陣進行排序,直到整個矩陣排序完畢。該程式靈活且可以處理不同大小的矩陣。但是,對於較大的資料集,建議使用更高效的排序演算法,例如合併排序或快速排序,因為它們的執行時間複雜度更快。儘管如此,氣泡排序演算法仍然是學習排序演算法的有用技術,並且對於程式設計初學者來說是一個重要的概念。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP