Java冒泡排序

标签 java bubble-sort

我面临一个问题,我需要按字母顺序对字符串数组进行排序。我可以对一个数组进行排序,但是当有两个数组对应于第一个数组时,问题就开始了。每个数组中的每个值都应该位于相同的位置,以使信息不会困惑。对 array1 进行排序后,它按字母顺序排列,但我不知道如何使 array2array3 中的值更改位置排序完成后与 array1 相同。

到目前为止我的代码是:

public  void sort() 
{

    boolean finish = false;

    while(finish == false){

        finish = true;

        for(int i=0;i<Country.length-1;i++)

        {
            int num = 0;
            if(Country[i] != null && Country[i + 1] != null)
            {
                String name1=Country[i]; String name2=Country[i+1];
                num=name1.compareTo(name2);
            }
            else if(Country[i] == null && Country[i + 1] == null){
                num = 0;
            }
            else if(Country[i] == null){
                num = 1;
            }
            else {
                num = -1;
            }
            if(num>0)
            {
                String temp=Country[i];

                Country[i]=Country[i+1];
                Country[i+1]=temp;
                finish=false;
            }
        }
    }

最佳答案

到目前为止,最推荐的方法是重新设计您的程序,并将所有相关项目安排在一个类中。毕竟,这就是对象的用途。然后,您可以使该对象Comparable,为其提供一个compareTo方法,然后对其进行排序。

但是,如果您确实无法做到这一点,那么您应该做的是,每当您交换排序数组中的任意两个项目时,请确保交换其他数组中的相应项目。

因此,如果您有数组 countrycapitalheadOfState,则必须编写如下内容:

  String temp=country[i];

  country[i]=country[i+1];
  country[i+1]=temp;

  temp=capital[i];
  capital[i]=capital[i+1];
  capital[i+1]=temp;

  temp=headOfState[i];
  headOfState[i]=headOfState[i+1];
  headOfState[i+1]=temp;

这样,每当您移动主数组中的任何内容时,您也将移动其他数组中的相应项目,因此它们将保持在一起。

但是,如果您重新设计程序,那就更受欢迎了。

另请注意 Java 语言约定 - 变量名称不应以大写字母开头,只有类型名称应以大写字母开头。

关于Java冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849719/

相关文章:

JAVA冒泡排序运行时问题

c - 修改后的冒泡排序不显示遍数

java - Apache CXF wsdl 通过 SSL/TLS 下载

java - Seam 2.0 到 2.1 (2.2) 迁移

java - Observable 执行 IO 并遵循 IO 调度器上的流程

arrays - 冒泡排序对给定数组执行的交换次数

java - 为什么整数常量池的行为在 127 处发生变化?

Java - 等待 Runnable 完成

java - 如何使用 Comparator 实现冒泡排序?

java - 通过二分搜索查找数组中的位置时遇到问题