如何在不使用collections.sort()的情况下对arraylist进行排序?
我一直在寻找一种方法来排序arraylist而不使用collections.sort,因为我自己的逻辑是有缺陷的,我遇到了很多麻烦。
我需要以一种方式对它进行排序,我可以使用我创建的方法,它基本上执行collections.swap所做的操作,以便完全对arraylist进行排序。
这是我的代码:
public static void mySort(ArrayList sort){ int min = 0; int i; int j = 0; for(i = 0; i < sort.size() - 1; i++) { min = i; mySwap(sort, j ,min); for(j = 0; j < sort.size() -1;j++){ if(j < min ){ min = j; } } } } public static void mySwap(ArrayList a, int x, int y){ double temp = a.get(x); a.set(x,a.get(y)); a.set(y,temp); }
我一直遇到很多麻烦。 对不起,如果这是一个伤害社区的问题。
我假设您需要以下算法:在数组的其余部分中找到min,将其与当前元素交换,从第一个开始,重新考虑rest ,以增加+1索引的数组开始。
您应该像这样更新您的代码:
public static void swap(List sort, int i, int j) { int tmp = sort.get(i); sort.set(i, sort.get(j)); sort.set(j, tmp); } public static void doSort(List sort) { int min; for (int i = 0; i < sort.size(); ++i) { //find minimum in the rest of array min = i; for (int j = i + 1; j < sort.size(); ++j) { if (sort.get(j) < sort.get(min)) { min = j; } } //do swap swap(sort, i, min); } }
你有一个错误,找到最小,然后交换项目。 请注意,代码可以通过多种方式进行改进(我试图尽可能地保持你的BubbleSort
方式),例如交换swap()
整数引用,像另一个答案所做的那样做BubbleSort
(相同的算法但更简单的实现),使用O(n * log(n))
复杂度算法,等等。
- 为什么给非generics方法或构造函数的显式类型参数编译?
- Java Swing:将鼠标hover在矩形上时,光标响应非常慢
- Android JSONArray到ArrayList
- Java ArrayList IndexOutOfBoundsException尽管给出了初始容量
- 将字符串arraylist存储到双arraylist中?
- 如何使ArrayList在java中作为二维数组工作?
- Java性能 – 用于大量快速读取的ArrayLists与Arrays
- 这有什么不对? 我得到一个java.lang.ClassCastException错误,但我看不出我出错的地方
- 最好的使用方法包含在Java中的ArrayList中?