Java 程序:对字符串执行冒泡排序


2022 年 4 月 11 日, Learn eTutorial
2680

在这里,我们将解释如何编写一个 Java 程序来对字符串执行冒泡排序。冒泡排序也用于对整数数组进行排序,我们的 Java 程序集合中有一个对数字执行冒泡排序的程序,您也可以查看。

这里我们首先声明一个字符串数组来存储字符串。然后,通过使用嵌套的for 循环,比较字符串与相邻字符串。如果字符串未按排序顺序排列,则交换它们。

为了更好地理解该程序,我们建议您学习下面列出的 Java 编程基础知识

什么是冒泡排序?

冒泡排序算法将对数组的元素进行排序。在冒泡排序中,第一个元素将与其余元素进行比较,当获得较小元素时会发生交换。所以,

  • for 循环的第一次迭代后,第一个已排序的元素,即数组中最大的元素,将被放置在最后一个索引处
  • 在第二次迭代中,比较从第一个元素到数组的倒数第二个位置开始。循环将避开最后一个索引,因为它包含已排序的元素。因此,第二个最大的元素将被放置在数组的倒数第二个位置。
  • 这个过程在 for 循环的每次迭代中继续进行,在最后一次迭代之后,我们将得到完全排序的数组。
 Java - Perform bubble sort on string

如何在 Java 中比较字符串?

我们可以使用 compareTo() 方法比较字符串。

  1. 如果两个字符串相等,compareTo() 函数返回
  2. 如果第一个字符串小于第二个字符串,该函数返回一个 负值
  3. 如果第一个字符串大于第二个字符串,该函数返回一个 正值

如何实现对字符串执行冒泡排序的 Java 程序?

首先,我们必须声明类 BubbleSort。然后打开主函数。声明字符串数组 s_arr[],并赋一些值。声明一个临时字符串变量 tmp。通过使用嵌套的 for 循环,使用 compareTo() 方法检查相邻字符串。如果函数返回负值,则交换元素。然后显示已排序的数组。

算法

步骤 1:使用公共修饰符声明类 BubbleSort

步骤 2:打开**main()**函数以启动程序,Java程序的执行从**main()**开始

步骤 3:声明一个带有字符串的字符串数组 s_arr[],以及整数变量 i,j

步骤 4:声明一个临时变量 tmp

步骤 5:通过使用嵌套的 for 循环,条件为 i < 数组大小 且 j < 数组大小 - i - 1(重新调整边界或应该进行比较的最后位置,在每个已排序元素放置之后)执行步骤 6

步骤 6: 检查是否 s_arr[j+1].compareTo(s_arr[j]) > 0,意味着较小的字符串在最高索引处,然后按如下方式交换元素

  1. tmp=s_arr[j]
  2. s_arr[j]=s_arr[j+1]
  3. s_arr[j+1]=tmp

步骤 7:显示已排序的字符串数组 s_arr

 

Java 源代码

                                          public class BubbleSort {
    public static void main(String[] args) {
        int i,j;
        String s_arr[] = {
            "Richard",
            "John",
            "Williams",
            "Peter",
            "Aron"
        };
        String tmp;
        System.out.println("Sorted Strings:");
        for ( i = 0 ; i < s_arr.length ; i++) {
            for ( j = 0 ; j < s_arr.length-i-1 ; j++) {

                if (s_arr[j+1].compareTo(s_arr[j]) > 0) {
                    tmp = s_arr[j];
                    s_arr[j] = s_arr[j+1];
                    s_arr[j+1] = tmp;
                }
            }
            System.out.println(s_arr[j]);
        }
    }
}
                                      

输出

Sorted Strings:
Aron
John
Peter
Richard
Williams