Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
Java ArrayLink列表插入排序_Java_Sorting_Arraylist_Insertion Sort - Fatal编程技术网

Java ArrayLink列表插入排序

Java ArrayLink列表插入排序,java,sorting,arraylist,insertion-sort,Java,Sorting,Arraylist,Insertion Sort,我必须做一个数组列表来进行插入排序,我的老师把这个给了我,给了我一个F,但说我可以在周五之前补上。 我不明白为什么这不是A.L插入排序。 有人能帮我解决这个问题,让它符合他的标准吗? 谢谢 他说, 在检查了第一次插入排序之后,所有人都做得不正确。我特别说过要移动数字并将数字移动到适当的位置,而不是将数字交换到适当的位置。在MySA的作业中,我说如果你这样做,你的作业将得到0分 import java.util.ArrayList; public class AListINSSORT {

我必须做一个数组列表来进行插入排序,我的老师把这个给了我,给了我一个F,但说我可以在周五之前补上。 我不明白为什么这不是A.L插入排序。 有人能帮我解决这个问题,让它符合他的标准吗? 谢谢

他说,

在检查了第一次插入排序之后,所有人都做得不正确。我特别说过要移动数字并将数字移动到适当的位置,而不是将数字交换到适当的位置。在MySA的作业中,我说如果你这样做,你的作业将得到0分

 import java.util.ArrayList;

 public class AListINSSORT {

     private static void insertionSort(ArrayList<Integer> arr) {
          insertionSort();
     }

     private static void insertionSort() {
        ArrayList<Integer> swap = new ArrayList<Integer>();
        swap.add(1);
        swap.add(2);
        swap.add(3);
        swap.add(4);
        swap.add(5);

        int prior = 0;
        int latter = 0;

        for (int i = 2; i <= latter; i++)
        {
            for (int k = i; k > prior && (swap.get(k - 1) < swap.get(k - 2)); k--)  
            {
                Integer temp = swap.get(k - 2);
                swap.set(k - 2, swap.get(k - 1));
                swap.set(k - 1, temp);
            }
        }
        System.out.println(swap);
    }
 }
import java.util.ArrayList;
公共类AlistinSort{
专用静态void insertionSort(ArrayList arr){
insertionSort();
}
私有静态void insertionSort(){
ArrayList swap=新的ArrayList();
增加(1);
增加(2);
增加(3);
增加(4);
增加(5);
int-prior=0;
int后者=0;
对于(inti=2;i-prior&(swap.get(k-1)
首先,您的老师似乎要求您使用LinkedList而不是ArrayList。他们之间有很大的不同

第二,也许更切题。在您的内部循环中,您保存了一个temp变量,并将位置k-2和k-1处的元素相互交换。从评论来看,这不是你老师的意图。由于他希望您解决元素插入的问题,我建议您查看LinkedList.add(inti,ee)的以下方法定义:


这应该为您指明了正确的方向。

首先,您的老师似乎要求您使用LinkedList而不是ArrayList。他们之间有很大的不同

第二,也许更切题。在您的内部循环中,您保存了一个temp变量,并将位置k-2和k-1处的元素相互交换。从评论来看,这不是你老师的意图。由于他希望您解决元素插入的问题,我建议您查看LinkedList.add(inti,ee)的以下方法定义:


这将为您指明正确的方向。

在我看来,您的代码根本不起作用。 外for循环的条件

for (int i = 2; i <= latter; i++)

for(inti=2;i据我所知,您的代码根本不起任何作用。
外for循环的条件

for (int i = 2; i <= latter; i++)

for(inti=2;i这里有很多错误

首先,你的方法:

private static void insertionSort(ArrayList<Integer> arr) {
   insertionSort();
}

这里有很多问题

首先,你的方法:

private static void insertionSort(ArrayList<Integer> arr) {
   insertionSort();
}

完全忽略其参数的
insertionSort(ArrayList arr)
方法有什么意义?它永远不会进入循环。完全忽略其参数的
insertionSort(ArrayList arr)
方法有什么意义?它永远不会进入循环。关于“不将数字交换到位”,我认为你想做得对。你的两个for循环看起来好像你想插入数字而不是交换。也许,你的老师只是被你列表的名称
swap
弄糊涂了。所以,考虑一下重命名它。关于“不交换数字”,我认为你想做得对。你的两个for循环看起来好像你想插入数字而不是交换。也许,你的老师只是被你列表的名称
swap
弄糊涂了。所以,考虑一下重命名它。