Java程式:按行排序二維陣列


在資料結構中,排序是指根據問題或確定的運算子重新排列給定的元素列表或特定陣列。該運算子決定元素的新順序。陣列是某些元素的集合,這些元素可以是任何佔用相鄰記憶體位置的東西。在這裡,我們將相同型別的多個元素儲存在一起。排序幫助我們重新排列這些元素。例如,15、8、12、28 是未排序陣列的元素,排序後,28、15、12、8 成為按降序排列的已排序陣列。

本文將演示如何使用 Java 程式按行對二維陣列進行排序。我們將使用三種不同的方法來解決這個問題。首先,我們將使用 vector() 方法,其次是庫函式 Array.sort,最後我們將使用氣泡排序。

Vector() 方法的演算法

  • 步驟 1 − 匯入所有必需的庫。

  • 步驟 2 − 列印並顯示排序前的矩陣。

  • 步驟 3 − 建立 Vector 類的物件。

  • 步驟 4 − 將行的元素新增到向量中。

  • 步驟 5 − 對向量進行排序。

  • 步驟 6 − 從向量中刪除元素。

  • 步驟 7 − 列印並顯示排序後的矩陣。

  • 步驟 8 − 使用迴圈重複,直到所有行都排序完畢。

  • 步驟 9 − 完成

語法

Vector v = new Vector<>(); 

以下程式中使用的函式 −

  • removeAll() − 此函式用於刪除我們已建立用於儲存排序元素的向量中的所有元素。

  • Vector.get(element) − get() 方法有助於獲取儲存在特定位置的向量的元素。

  • add() 函式將元素新增到向量中。

  • Collection.sort() − 此方法用於對向量進行排序。

使用庫函式 arrays.sort 的演算法

  • 步驟 1 − 匯入所有必需的庫。

  • 步驟 2 − 一次排序單個行。

  • 步驟 3 − 使用函式 Arrays.sort()。

  • 步驟 4 − 列印並顯示排序後的矩陣。

語法

Array.sort(arr[i]);

氣泡排序演算法

  • 步驟 1 − 匯入所有必需的庫。

  • 步驟 2 − 使用迴圈遍歷矩陣的行和列。

  • 步驟 3 − 使用另一個迴圈進行比較和交換。

  • 步驟 4 − 交換元素。

  • 步驟 5 − 列印排序後的矩陣。

語法

begin BubbleSort(arr)
for all array elements
   if arr[i] > arr[i+])
      swap(arr[i], arr[i+1]
   end if
end for
return arr
end BubbleSort

方法

  • 使用 Vector()

  • 使用 Arrays.sort()

  • 使用氣泡排序()

方法 1:Vector()

示例

import java.io.*;
import java.util.*;

public class WC {
   public static void main(String[] args) throws java.lang.Exception {
      int[][] arr = {
         {1, 3, 8, 5, 9},
         {5, 3, 1, 7, 4},
         {0, 5, 9, 2, 6},
         {4, 6, 3, 1, 0},
         {3, 5, 8, 9, 2}
      };

      System.out.println("Array without sorting");
      for (int i = 0; i < 5; i++) {
         for (int j = 0; j < 5; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }
      System.out.println();

      List<Integer> space = new ArrayList<>();

      for (int i = 0; i < 5; i++) {
         for (int j = 0; j < 5; j++) {
            space.add(arr[i][j]);
         }

         Collections.sort(space);

         for (int j = 0; j < 5; j++) {
            arr[i][j] = space.get(j);
         }

         space.clear();
      }

      System.out.println("Array after sorting");
      for (int i = 0; i < 5; i++) {
         for (int j = 0; j < 5; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }
   }
}

輸出

Array without sorting
1 3 8 5 9 
5 3 1 7 4 
0 5 9 2 6 
4 6 3 1 0 
3 5 8 9 2 
Array after sorting
1 3 5 8 9 
1 3 4 5 7 
0 2 5 6 9 
0 1 3 4 6 
2 3 5 8 9

以上是 vector() 方法的輸出,我們首先列印了未排序的矩陣,程式執行後,顯示排序後的矩陣。

方法 2:Arrays.sort()

示例

import java.io.*;
import java.util.Arrays;

public class ArraySort {

   static int sortrowWise ( int arr [][]) {

      for (int i =0; i< arr.length; i++)
      Arrays.sort(arr[i]);

      for (int i =0; i < arr.length;i++) {

         for( int j=0; j < arr[i].length; j++)

         System.out.print(arr[i][j] + "");
         System.out.println();
      }
      return 0;
   }
   public static void main(String args[]){
      int arr[][] = {  { 9,2,6,4,5},
                        { 8,3,7,0,2},
                        { 5,3,8,1,2},
                        { 3,5,7,1,0}
                     };
      sortrowWise(arr);

   }
}

輸出

24569
02378
12358
01357

以上是 Arrays.sort 方法的輸出,這是我們使用名為 Arrays.sort() 的庫後的排序矩陣。

方法 3:氣泡排序()

示例

import java.io.*;

public class BubbleSort {
   static int sortRowWise (int arr[][]) {

      for (int i= 0; i < arr.length; i++) {

         for (int j=0; j< arr[i].length; j++) {

            for (int k=0; k<arr[i].length - j -1; k++ ) {
               if (arr[i][k]> arr[i] [k+1]) {
                  int t = arr[i][k];
                  arr[i][k] = arr[i][k + 1];
                  arr[i][k + 1] = t;
               }
            }
         }
      }
      for (int i=0; i< arr.length; i++) {
         for (int j =0; j< arr [i].length; j++)

            System.out.print(arr[i][j] + "");
            System.out.println();
      }
      return 0;
   }
   public static void main (String arg[]){

      int arr[][] = { { 0,3,6,9,4},
                        { 7,5,3,8,1},
                        { 2,5,3,9,0},
                        { 1,7,4,0,2} };
      sortRowWise(arr);                            
   }
}

輸出

03469
13578
02359
01247

以上是我們用來對矩陣進行排序的氣泡排序方法的輸出。在這裡,我們使用了比較和交換,這給了我們一個排序後的矩陣。

結論

在本文中,我們學習瞭如何使用不同的方法(如 Vector() 方法、Arrays.sort 函式和氣泡排序)對陣列進行按行排序。所有方法都有獨特的演算法,可以幫助我們對矩陣進行排序。

更新於:2023年7月31日

2K+ 瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.