我有三个ArrayLists
.其中一个Strings
- 名字和两个Integers
- 得分和图片编号.我想通过球员得分(从最高到最低)同时对它们进行排序.现在我使用一个简单的冒泡排序,但我认为当Lists
它更大时它将不会有效.
这是我的代码:
public class MyBubbleSort { public static void bubble_srt(Listscore, List name, List pic) { int n = score.size(); int k; for (int m = n; m >= 0; m--) { for (int i = 0; i < n - 1; i++) { k = i + 1; if (score.get(i) < score.get(k)) { swapNumbers(i, k, score, name, pic); } } printNumbers(score); } } private static void swapNumbers(int i, int j, List score, List name, List pic) { int temp; temp = score.get(i); score.set(i, score.get(j)); score.set(j, temp); String s; s = name.get(i); name.set(i, name.get(j)); name.set(j, s); int p; p = pic.get(i); pic.set(i, pic.get(j)); pic.set(j, p); } private static void printNumbers(List input) { for (int i = 0; i < input.size(); i++) { System.out.print(input.get(i) + ", "); } System.out.print("\n"); } }
谢谢!
最好的方法是创建一个包含得分,名称和图片属性的类,并拥有该类的一个列表,您可以使用该列表进行排序,Collections.sort
并Comparator
根据得分属性比较您的类的两个实例.
与其他排序算法(合并排序,快速排序)相比,冒泡排序效率低,并且不需要自己实现排序算法,因为标准Java包已经为您执行了此操作.