帮助使用冒泡排序

时间:2011-08-02 19:57:46

标签: java algorithm sorting

我正在尝试制作一个项目,询问一个人想要的字符串数量,然后提示该人以任何顺序输入字符串。然后我应该按字母顺序排序,我根本不能使用Java.util。我应该使用任何类型的排序算法,可以按字母顺序对输入的字符串进行排序。这是我的代码到目前为止,任何人都可以帮助我在我的代码中放置一个排序算法吗?

package sorting;
import java.io.*; 

 public class Sorting
 {
  private static BufferedReader stdin =  new BufferedReader( new InputStreamReader( System.in ) );

  public static void main(String[] arguments) throws IOException
 {
   System.out.println("How many strings would you like to enter?");
int stringCount = Integer.parseInt(stdin.readLine());
String[] stringInput = new String[stringCount];
String message = "";
for(int i = 0; i < stringCount; i++)
{
System.out.print("Could you enter the strings here: \n");
    stringInput[i] = stdin.readLine();
    message = message + stringInput[i] + ", ";
}
System.out.println("So you entered:\n" + message);    
}
private static void bubbleSort(String[] stringInput, int length) {
    int temp, counter, index;
    for(counter=0; counter<length-1; counter++) {
        for(index=0; index<length-1-counter; index++) {
            if(stringInput[index] > stringInput[index+1]) {
                 temp = stringInput[index];
                 stringInput[index] = stringInput[index+1];
                 stringInput[index+1] = temp;
            }
         }
      }
   }
}

3 个答案:

答案 0 :(得分:3)

  1. 查看sorting algorithm的内容,并从列表中选择一个。

  2. 然后实施算法(最好采用单独的方法)。

  3. 然后在输入循环后从main方法调用此方法。

  4. 如果您对2.或3.有问题,请发布(通过编辑问题)您尝试过的内容,以及您的问题(例如,任何错误消息或错误与预期的输出),我们可以帮助您。< / p>

答案 1 :(得分:3)

尝试使用冒泡排序,插入排序或合并排序,您可以通过谷歌Google了解更多相关信息。

此外,Scanner有时比BufferReader好得多。但由于它是在util我猜你不能使用它。

答案 2 :(得分:2)

指出你的方向思考以下......

基本上它的工作方式是你有一个列表,在这种情况下可以说ints

int unsortedNums[] = new list[5];

unsortedNums[0] = 1;
unsortedNums[1] = 4; 
unsortedNums[2] = 6; 
unsortedNums[3] = 2; 
unsortedNums[4] = 7; 

1,4,6,2,7

你需要从最小到最大排序。你这样做的方式如下,使用伪代码:

//loop through the list
for(int i = 0; i < unsortedNums.length; i++){
    if(unsortedNums[i] <= unsortedNums[i+1]){ //if current number is < next number
        //keep the number there because it is less than the next number
    }else{
        //you need to shift the current number to the right until because it is bigger
        //than the next number
    }
}

现在这不会在第一次尝试时完全排序,[在这个例子中会使你的列表1,4,2,6,7]你要么必须再次调用这个函数,直到列表完全排序,或者您可以查看递归,或阅读有关任何类型,如冒泡排序,插入排序,合并排序等。

提及确保检查阵列界限可能是件好事,因为如果i + 1比你的列表大,你会得到一个例外,所以请记住这一点。

祝你好运,记住,家庭作业不仅仅是增加你成绩的另一件事,但家庭作业的真正重要性在于学习和练习,否则你将无法理解并在任何课堂上取得成功。如果它太容易了,你可能没有学到任何东西。如果它很难,你可能会学到很多东西,即使你并不总是正确的。

快乐编码。