Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arraylist中的Java泛型插入排序和选择排序_Java_Sorting_Generics - Fatal编程技术网

Arraylist中的Java泛型插入排序和选择排序

Arraylist中的Java泛型插入排序和选择排序,java,sorting,generics,Java,Sorting,Generics,我正在尝试实现插入排序,它适用于一个奇怪的实现,但顺序相反。我尝试过的另一种选择排序也是如此,但它的工作方式是相同的 void insertionSort(ArrayList<T> genericAList) { for (int n = 1; n < genericAList.size(); n++) {// go from start to end // n=genericList.size //n is pr

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

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();
        }
void insertionSort(ArrayList genericAList){
对于(int n=1;n0;j--){
if(genericAList.get(n).compareTo(genericAList.get(j))==1){
T ncopy=genericAList.get(n);
set(n,genericAList.get(j));
genericAList.set(j,ncopy);
}
}
//尝试复制数组以反转顺序失败
ArrayList copy=新建ArrayList();
对于(int i=genericAList.size()-1;i>=0;i--){//从旧
copy.add(genericAList.get(i));
}
//通用列表=副本;
}
//返回克隆();
}

请注意,compareTo不保证返回-1或1表示较大或较小

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

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

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

因此,比较5和3会得到-2或2(例如,取决于它们的方向).

for循环应该是
int j=n;j>0;j--
==1
应该是
>0
,您正在比较/交换
n
处的元素,而它应该是
j-1
,您现在面临的问题是什么?您的泛型
T
声明在哪里?它看起来怎么样?它只是比较一下res是personobj.age属性,代码目前运行正常,但它按降序排序。我试图让注释掉的for循环正常工作。泛型类型声明与代码中对象的类型参数和arraylist的类型参数相关