繁体   English   中英

这些关于插入排序的代码之间的比较是什么?

[英]What is the comparison between these codes regarding Insertion Sort?

我试图写一个插入排序,当在互联网上查询时,我听不懂代码。

这是我所做的:

public class InsertionSort {
    public static void sort (int array[]) {
        for (int i = 1; i < array.length; i++) {
            int j = i - 1;
            while (j >= 0 && array [j] > array [j + 1]) {
                int temp = array [j + 1];
                array [j + 1] = array [j];
                array [j] = temp;
                j -= 1;
            }
        }
    }
}

在我的主要方法中,我这样写:

public class TestAlgos {
    public static void main (String args []) {
        int array[] = {2,5,3,6,8,0,4,2,4,6,1,4,6,9,3};

        InsertionSort.sort(array);
        System.out.println(array);
    }
}

但是运行时,我得到了以下输出(顺便说一下,我使用了eclipse):

[I@ed17bee

因此,我在网上搜索了解决方案,并在网站上找到了此代码。

while(i > 0 && Array[i] > key) {
    Array[i + 1] = Array[i];                
    i = i - 1;
}
Array[i + 1] = key;

我不知道我的代码是否错误。 请解释。

另外,我的第二个问题是为什么数字字符串thing被显示为输出而不是错误。

您的代码没有错,因为它是有效的插入排序实现。 您引用的第二个代码仍然是一种更好的方法,因为它插入的次数更少。

主要区别如下:您的算法切换值,直到对于当前索引的值不再有可用/不需要的操作为止。

引用算法向下移动值的索引,直到不再有可用/不需要的操作为止,然后将存储在变量中的值放在当前索引下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM