这是我到目前为止的代码,一切运行正常。 我很困惑的是如何比较添加到arraylist的新项目?我在看比较器,但我认为它不适合这种情况?我可能错了,但我似乎无法弄清楚这背后的逻辑。我打算手动做,但后来意识到,这可能不是一个聪明的主意。我如何创建插入排序算法?我打算使用顺序排序方法,但我觉得我错过了一些东西。任何人都能解释一下吗?
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class lab06 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String entry;
boolean loop = true;
List<Integer> list = new ArrayList<Integer>();
System.out.println("Simple Sorting Program");
System.out.println("");
System.out.println("======================");
System.out.println("");
System.out.println("At start this list contains: " + list);
System.out.println("");
while(loop = true){
System.out.print("Enter val (neg to end): ");
entry = input.next();
if (entry.charAt(0) !='-'){
Integer val = Integer.valueOf(entry);
list.add(val);
System.out.println("List now contains: " + list);
}
else{
loop = false;
System.out.println("At end, list contains: "+ list);
System.out.println("Goodbye!");
}
}
}
答案 0 :(得分:0)
正如@MadProgrammer所说,最好的方法是使用搜索算法,特别是二进制搜索算法在O(logN)上相当高效,然后在上下文中插入数据值。
答案 1 :(得分:0)
如果没有要求使用List,或者使用元素条目号引用您的条目,您可以考虑用apache commons中的TreeBag替换您的List。
这实现了Collection接口,并在添加新值时在内部维护元素的自然顺序(在本例中为Integers)。它们将通过Iterator按顺序列出,并在打印内容时通过toString()方法隐式列出。
#include org.apache.commons.collections4.bag.TreeBag;
...
Collection<Integer> list = new TreeBag<Integer>();
...
要使用此功能,需要下载commons-collections.jar并在运行程序时将其包含在类路径中。