在这个程序中,我只想对 ArrayList
words
进行冒泡排序。到目前为止,我使用了 Collections.sort
并将所有行按字母顺序放置在文本文件中。但是,我想为这个程序实现一个二进制搜索算法但是,我认为如果不对数据进行排序(例如归并排序、冒泡排序)是不可能的。我可能是错的,但这就是我来这里寻求指导和知识的原因。
其次,当我创建一个排序方法时,这是一个 words
是一个 String
而不是 String[]
。我该如何使用这种数据类型进行冒泡排序?
public static void main(String[]args) throws IOException{
Scanner scan = new Scanner(System.in);
String stringSearch = scan.nextLine();
ArrayList<String> words = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader("File1.txt"));
String line;
while ((line = reader.readLine()) != null) {
words.add(line);
}reader.close();
Collections.sort(words);
for(String str:words)
System.out.println(str);
for(String sLine : words)
{
if (sLine.contains(stringSearch))
{
int index = words.indexOf(sLine);
System.out.println("Got a match at line " + index);
}
}
System.out.println(words.size());
}
最佳答案
首先,您可以使用 Collections.sort(Collection) 对列表进行排序。
其次,您可以使用 ArrayList 实现的 List.get(int) 来实现 O(1) 索引访问。
第三,Object.compareTo(Object) 将完成指导二分搜索循环的工作。
抱歉,如果我误解了什么!
关于java - 我该如何冒泡排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14228380/