【问题标题】:Bubble sort didn't sort冒泡排序没有排序
【发布时间】:2021-12-15 22:42:17
【问题描述】:

我尝试进行冒泡排序,但仍然是初学者,我没有发现任何错误,但是当我尝试按字母顺序排序时,它没有对数组进行排序。

public class Main  {

    public static void bubblesort ( String [] name) {
        String tempmemory = " na";

        for (int i = 0; i < name.length; i++) {
            for (int j = 0; j < (name.length - 1); j++) {

                if (name[j].compareTo(name[j + 1]) < 0)

                    tempmemory = name[j];
                name[j] = name[j + 1];
                name[j + 1] = tempmemory;
            }
        }
    }

    public static void main ( String [] args) {

        String [] name  = { "ciku", "eman","aina"} ;

        int i=0;

        System.out.println(" Before sort : ");
        while (i < name.length)
        {
            System.out.print ( name[i] + "  ");

            i++;
        }

        bubblesort(name);

        i=0;
        System.out.println(" \n After sort : ");
        while (i < name.length)
        {
            System.out.print ( name[i] + "  ");

            i++;
        }

}


}

如何修复此代码以使用冒泡排序正确排序数组?

【问题讨论】:

  • 检查 if 块,缺少 {}

标签: java arrays string sorting bubble-sort


【解决方案1】:

这段代码:

            if (name[j].compareTo(name[j + 1]) < 0)

                tempmemory = name[j];
            name[j] = name[j + 1];
            name[j + 1] = tempmemory;

显然错了。

提示:使用{} 修复它。

【讨论】:

【解决方案2】:

你的 if 条件应该包括这 3 个语句,现在它下面只有一个语句,即 tempmemory = name[j];。因此,如果条件有多个语句,请使用 {} 括号。所以这样写 if 语句:

if (name[j].compareTo(name[j + 1]) < 0) {
    tempmemory = name[j];   
    name[j] = name[j + 1];
    name[j + 1] = tempmemory; 
}

【讨论】:

  • 我已经编辑了分号,但是输出没有正确排序
  • @naddy 这不是关于分号,而是关于大括号。将以下 3 个语句放在一个大括号下的 if 语句中
猜你喜欢
  • 2020-05-24
  • 2014-02-13
  • 2013-10-09
  • 2014-06-25
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多