java - 为什么插入排序不起作用?

标签 java

从 Python 切换到 Java 并决定编写插入排序方法。我用 Python 编写了这个,并尝试一对一地切换代码,一切似乎都很好,但它无法正常运行。我删除了所有其他类方法/数据字段来节省空间,并尝试将此代码限制为仅与此问题相关的代码:

public class test1 {
    static final int NOT_FOUND = -1; // A constant

    // Attributes (just one)
    private double data[];

    // Constructor
        test1 (double data[]) {
            this.data = data.clone(); 
            }

        double getItem (int key) {
            return data[key];
        }

        void insertionSort () {
            for (int i = 1;i >= data.length;i++){
                double currentElement = data[i];
                int k = i - 1;
                while(k>=0 & data[k] > currentElement){
                    data[k+1] = data[k];
                    k -= 1;
                    data[k + 1] = currentElement;
                }
            }
        }

public static void main(String[] arg){
    double testData[] = {1,4,32,5,673,145,68,14,757};
    test1 b = new test1 (testData);

    b.insertionSort();
    //See how array has changed
    for (int i = 0; i < 9; i++) {
           System.out.print(b.getItem(i) + ", ");
        }
    }
}

最佳答案

改变

for (int i = 1; i >= data.length; i++)

for (int i = 1; i < data.length; i++)

其背后的原因是您正在从数组 data 中检索索引为 i 的项目。循环不起作用,因为 i 已初始化为 1 并且条件 i >= data.length 返回 false > 因为 i 实际上小于示例中 data 数组的长度,因此循环没有运行。

从数组中检索元素时,for 循环中的这种检查还存在其他问题,因为如果要返回元素的索引 >= 大于数组的长度您将得到一个 IndexOutOfBoundsException。

关于java - 为什么插入排序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22633837/

相关文章:

java - 如何增加应用程序可执行 jar 文件中的 JVM 堆大小?项目类型为Maven项目

Java内部类和静态嵌套类

java - 编写标准输入并等待标准输出

java - 如何在android java中的日历对象中传递小时,分钟和秒

java - 为空时获取空字符串

java - 使用 java mongo db 驱动程序使用 MongoDB 插入时出现重复键错误

java - Java中如何向下转换数组?

java - 自定义ListView不显示

java - JSTL 持久数据库连接

java - 使用jdt获取语句节点的封闭