繁体   English   中英

Java Arraylist 中的通用插入排序和选择排序

[英]Java Generic Insertion Sort and Selection sort in Arraylist

我正在尝试实现插入排序,它适用于一种奇怪的实现,但顺序相反。 我尝试的另一种选择排序也是如此,但它的工作方式相同。

void insertionSort(ArrayList<T> genericAList) {
        for (int n = 1; n < genericAList.size(); n++) {// go from start to end
            // n=genericList.size
            //n is primary index, j is secondary ind
            for (int j = 0; j < n; j++) { // This sorts in descending order
//WHY DOES THIS NOT WORK?? for (int j = n-1; j>0; j--) {
                if (genericAList.get(n).compareTo(genericAList.get(j)) == 1) {
                    T ncopy = genericAList.get(n);
                    genericAList.set(n, genericAList.get(j));
                    genericAList.set(j, ncopy);
                }
            }

//unsuccessfully trying to copy the array to reverse the order
                ArrayList<T> copy = new ArrayList<>();
                for (int i = genericAList.size() - 1; i >= 0; i--) { // start from end of old
                    copy.add(genericAList.get(i));
                }
    //            genericAList=copy;
            }
    //        return clone();
        }

请注意,compareTo 不保证为更大或更小返回 -1 或 1。

如果它们相同,则返回 0,如果它们不同,则返回大于或小于 0 的数字。

想象一下这种原始形式的伪代码 - 例如,如果我们比较两个数字,我们可能会这样做:

 public int compareTwoNumbers(x, y) {
     return x - y;
 }

所以比较 5 和 3 会给你 -2 或 2(例如,取决于它们的方式)。

for 循环应该是int j = n; j > 0; j-- int j = n; j > 0; j-- int j = n; j > 0; j--== 1应该是> 0 ,并且当它应该是j - 1时,您正在比较/交换n处的元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM