java - 如何修复这个冒泡排序程序?

标签 java sorting bubble-sort

package arraySort;

import java.io.IOException;
import java.io.File;
import java.util.*;

public class openFile {
    int x;
    static int i;
    static int[] myList = {100};

    public static void main(String[] args){
        try{
            File myFile = new File("arraySort.txt");
            Scanner scan = new Scanner(myFile);
            while(scan.hasNext()){                
                myList[i] = scan.nextInt();
                BubbleSort(myList);
                System.out.println(myList[i]);                                
         } 
         catch(IOException e){
             System.out.println("File not found!");
         }
    }
    public static void BubbleSort(int[] x){
        if (x[i] > x[i + 1]){
            int temp;
            temp = x[i];
            x[i] = x[i+1];
            x[i+1] = temp;
        }
    }
}

最佳答案

这里不是直接给你答案,而是一些提示:

  1. BubbleSort() 中没有任何循环。

  2. 您应该只在读入文件中的所有数字之后调用BubbleSort()一次。意思是,将调用移到 while 循环之外。

  3. 您永远不会增加变量i,因此您每次通过while循环时都会覆盖myList[0]

  4. 数组的大小不可调整。如果您尝试分配给 myList[1]myList[2],您将收到 ArrayIndexOutOfBoundsException 错误。有多种方法可以解决此问题 - 一种是将其从 int[] myList = {100} 更改为 ArrayList myList = new ArrayList()。您可以使用 myList.add(number) 添加数字,并使用 myList.get(i) 查找它们。

关于java - 如何修复这个冒泡排序程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653773/

相关文章:

java - 将 ArrayList 中的名称写入 XML 文件

java - 在 SparkSession 上设置 maxExecutorRetries

java - 获取特定标签的属性值

c++ - 链表的冒泡排序

python - 如何在 Python 中将元组中一项的值分配给另一项?

c - 用 C 进行冒泡排序

java - Hibernate 身份生成器问题

python - 根据另一个字典对列表进行排序

php - 使用 PHP 的 uasort 进行排序时保留键顺序(稳定排序)

java - 使用值和时间优先级(如果相等)对 LinkedHashMap 进行排序