这些关于插入排序的代码之间的比较是什么?
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;
不知道我的代码有没有错。请解释。
另外,我的第二个问题是为什么输出的不是错误而是数字字符串。
您的代码没有任何问题,因为它是有效的插入排序实现。您引用的第二个代码仍然是更好的方法,因为它减少了插入。
主要区别如下:
您的算法会切换值,直到对当前索引的值没有更多操作 available/required。
引用算法将值的索引向下移动,直到不再有操作available/required,然后将存储在key变量中的值放在当前索引下。
我试图编写一个插入排序,但在互联网上查找时,我无法理解代码。
这是我所做的:
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;
不知道我的代码有没有错。请解释。
另外,我的第二个问题是为什么输出的不是错误而是数字字符串。
您的代码没有任何问题,因为它是有效的插入排序实现。您引用的第二个代码仍然是更好的方法,因为它减少了插入。
主要区别如下: 您的算法会切换值,直到对当前索引的值没有更多操作 available/required。
引用算法将值的索引向下移动,直到不再有操作available/required,然后将存储在key变量中的值放在当前索引下。