按字母顺序排列数组中的字符串

时间:2016-05-01 20:50:36

标签: arrays string sorting

我想出了这个代码来尝试整理一系列字符串(我不想使用整数或导入,因为我试图理解迭代循环),但它只重新排列第一个两个字符串。有谁可以指出我的错误?

public class Alpha8 {
   public static void main(String[] args) {

       String[] Names = {"O","B","K","S","D","M","N","A"};

       String temp = null;

       for(int i=0;i<Names.length;i++){
           for(int j = i+1;j<Names.length;j++) {        
               if(Names[j].compareTo(Names[i])<0)
                   temp = Names[i];
                   Names[i] = Names[j];
                   Names[j] = temp;

                   for( i = 0;i<Names.length;i++){        
                        System.out.println(Names[i]);
                   }
               }
           }
       }
  }

1 个答案:

答案 0 :(得分:0)

你犯了两个错误:

  1. 您正在“交换”代码中打印数组。您只应在排序完成后打印数组。

  2. 您只需迭代一次数组。对于冒泡排序(这是您正在实施的),您需要继续迭代直到没有掉期。

  3. 该方法应如下所示:

    boolean hasSwapped;
    do {
        hasSwapped = false;
        for (int i = 1; i < names.size(); i++) {
            if (names[i-1].compareTo(names[i]) > 0) {
                swap(names[i-1], names[i]);
                hasSwapped = true;
            }
        }
    } while (hasSwapped);