Это код, который у меня есть, и все работает нормально. Что мне смущает, как сравнить новые предметы, добавленные в arraylist? Я смотрел на компаратора, но я не думаю, что это подходит для этой ситуации? Возможно, я ошибаюсь, но я не могу понять логику этого. Я собирался сделать это вручную, но потом понял, что это, вероятно, не умная идея. Как создать алгоритм сортировки вставки? Я собирался использовать последовательный метод сортировки, но я чувствую, что что-то не хватает. Может ли кто-нибудь пролить свет?Как отсортировать постоянно растущий 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!");
}
}
}
Основным ответом было бы не так. После сортировки вы должны вычислить место, где нужно будет вставить следующее значение и вставить его напрямую. Вы можете использовать какой-то бинарный алгоритм поиска, чтобы попытаться вычислить предпочтительное место, где должен быть вставлен элемент. – MadProgrammer
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#binarySearch% 28java.util.List,% 20T,% 20java.util.Comparator% 29 вычислит точку вставки в отсортированном списке. –
Почему бы не использовать 'TreeSet' вместо этого? Вам действительно нужны обманы? –