【问题标题】:Java bubble sort help needed需要 Java 冒泡排序帮助
【发布时间】:2019-03-11 03:18:57
【问题描述】:

晚上好,

我和我的小伙伴试图弄清楚为什么程序不会对我们输入的名称进行冒泡排序,也许有人可以暗示一下。

 public static void sortDatPlane(String Ref[]){


    int n = Ref.length;
    int k = 1;
    int j = n - 2;
    int i;

    while(k < n){
        i = 0;
        while (i <= j) {
            if(notInOrder(Ref, i, i+1)){
                swap(Ref, i, i+1);
            }
            i++;
        }
        k++;
    }

    for (String Ref1 : Ref) {
        System.out.println(Ref1);
    }

}

public static void swap(String Ref[], int i, int j){
        String temp = Ref[i];
        Ref[i] = Ref[j];
        Ref[j] = temp;
}

public static boolean notInOrder(String Ref[],int i, int j){
    return Ref[i].substring(0,1).compareTo(Ref[j].substring(0,1)) == 1;
}

【问题讨论】:

  • 请告诉我们 swap 和 notInOrder 的作用
  • 并描述出了什么问题。您预期会发生什么,结果又发生了什么?
  • @Bálint 已编辑,抱歉。它不会排序,只是作为常规列表打印 (#1 - aac #2 - aab - #3 aaa)
  • 为什么只比较字符串的第一个字符?而compareTo() 并不保证只有1 表示greater than - 它可以是任何正整数。

标签: java bubble-sort


【解决方案1】:

正如 Ken Y-N 在 cmets 中所说,您只比较字符串的第一个字符(substring(0, 1) 这样做)。删除该部分,它可能会起作用。

【讨论】:

  • 它已经工作了:OP 的输出完全按第一个字符 (;->) 排序
  • @Kevin 这对我来说听起来像是一个功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2014-06-25
相关资源
最近更新 更多