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+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告