Java Arraylist插入排序不正常?
我相当肯定我的算法是正确的,代码是正确的,但我似乎无法理解为什么它不能正确地对我的数字进行排序 我试图用ArrayList制作一个插入排序程序,但它似乎不能正常工作 这是我的密码:Java Arraylist插入排序不正常?,java,sorting,arraylist,Java,Sorting,Arraylist,我相当肯定我的算法是正确的,代码是正确的,但我似乎无法理解为什么它不能正确地对我的数字进行排序 我试图用ArrayList制作一个插入排序程序,但它似乎不能正常工作 这是我的密码: import java.util.ArrayList; public class NewInsertionSort { public static void main(String[] args) { ArrayList <Integer> Array = new Arra
import java.util.ArrayList;
public class NewInsertionSort {
public static void main(String[] args) {
ArrayList <Integer> Array = new ArrayList <Integer>();
Array.add(1);
Array.add(52);
Array.add(21);
Array.add(45);
Array.add(27);
Integer num;
Integer lock;
Integer num2;
for (num2 = 1; num2 < Array.size(); num2++) {
lock = Array.get(num2 - 1);
for (num = num2 - 1; (num >= 0) && (Array.get(num) < lock); num--){
Array.set(num+1, num);
}
lock = Array.get(num+1);
}
for(int z=0;z < Array.size(); z++){
System.out.println(Array.get(z));
}
}
}
import java.util.ArrayList;
公共类NewInsertionSort{
公共静态void main(字符串[]args){
ArrayList数组=新的ArrayList();
数组。添加(1);
增加(52);
数组。添加(21);
增加(45);
增加(27);
整数数;
整数锁;
整数num2;
对于(num2=1;num2=0)和(Array.get(num)
如果有任何人有任何建议和援助,给予,非常感谢,所有的帮助是感激的 你怎么能说“代码是正确的”并在后面加上“但我似乎不明白为什么它不能正确地对我的数字排序。”
在这一行中,您将值更改为索引(num
):
Array.set(num+1,num);
你可能是说:
Array.set(num+1,Array.get(num));
在内部for循环之后,您永远不会将存储在lock
中的值放回数组中
我尽量不给你一个完整的答案,因为SO不是来帮你做作业的。祝你好运
在这一行中,您将一个值更改为索引(num):
数组.set(num+1,num)
你可能是说:
set(num+1,Array.get(num))
yes是正确的,并且在内部循环结束后,您必须使用lock值更新i+1元素
所以它一定是这样的:
Integer num;
Integer lock;
Integer num2;
for (num2 = 1; num2 < Array.size(); num2++) {
lock = Array.get(num2);
for (num = num2 - 1; (num >= 0) && (Array.get(num) < lock); num--) {
Array.set(num + 1, Array.get(num));
}
Array.set(num + 1, lock);
}
Integer-num;
整数锁;
整数num2;
对于(num2=1;num2=0)和(Array.get(num)
Integer
应该是int
,它应该是数组而不是array
@TheProgrammerG,但我修正了这个问题,它仍然只是打印无序列表…使用LinkedList而不是ArrayList。@eg04lt3r不,不要。LinkedList
中基于索引的get和set是O(n)
;它们是ArrayList
Array.set(num+1,num)中的O(1)
正在将num+1
-th元素的值设置为num
,而不是num
-th元素的值。您的意思可能是Array.set(num+1,Array.get(num))
。