Java 如何打印合并排序的ArrayList?

Java 如何打印合并排序的ArrayList?,java,arraylist,Java,Arraylist,我几乎已经完成了我的作业,但我似乎不知道如何打印我的排序数组列表。它现在只打印出我原来的20个随机数的数组列表。我是否将打印放在合并或合并排序方法中?还是我完全做了别的事情?任何帮助都将不胜感激 //Conner Tilley import java.util.*; public class BuiltIns { public static void main(String[] args) { //Built in setup ArrayLis

我几乎已经完成了我的作业,但我似乎不知道如何打印我的排序数组列表。它现在只打印出我原来的20个随机数的数组列表。我是否将打印放在合并或合并排序方法中?还是我完全做了别的事情?任何帮助都将不胜感激

//Conner Tilley
import java.util.*;

public class BuiltIns
{
    public static void main(String[] args) {

            //Built in setup
        ArrayList<Integer> a = new ArrayList<Integer>();    
        Queue<Integer> q = new LinkedList<Integer>();
        Random r = new Random();

        //populate loop
        for(int j=1;j<=20;j++)
        {
            int fill = r.nextInt(100);
            a.add(new Integer(fill));
        }

        //check and some display
        int size = a.size();
        System.out.println("Populating the Array List of Size 20");
        System.out.println("This list contains");
        System.out.println(a);
        System.out.println("Sorting");
        //actual merging
        System.out.println(a);
    }

    //first merging method
    public static void mergeSort(int[] a)
    {
        int size = a.length;
        if(size<2)//halt and then return
        {
            return;
        }

        //some initial setup
        int mid = size/2;
        int rightSize = size-mid;
        int leftSize = mid;
        int[] left = new int[leftSize];
        int[] right = new int[rightSize];

        //populate the left
        for(int i=0;i<mid;i++)
        {
            left[i] = a[i];
        }

        //populate the right
        for(int i=mid;i<size;i++)
        {
            right[i-mid] = a[i];
        }
            mergeSort(left);
            mergeSort(right);
            //actual merging
            merge(left,right,a);
            System.out.println(a);
    }

    //second merging method
    public static void merge(int[] left, int[] right, int[] a)
    {
        int leftSize = left.length;
        int rightSize = right.length;
        int i=0;//left
        int j=0;//right
        int k=0;//a

        /*
         * while loop to compare the first index of two arrays
         * and order them until complete
         */
        while(i<leftSize && j<rightSize)
        {
            if(left[i]<=right[j])
            {
                a[k] = left[i];
                i++;
                k++;
            }
            else
            {
                a[k] = right[j];
                j++;
                k++;
            }
        }
        //This is used to fill in the rest
        while(i<leftSize)
        {
            a[k] = left[i];
            i++;
            k++;
        }
        while(j<rightSize)
        {
            a[k] = right[j];
            j++;
            k++;
        }
        System.out.println(a);
    }

}
//康纳·蒂利
导入java.util.*;
公共类内置
{
公共静态void main(字符串[]args){
//内置设置
ArrayList a=新的ArrayList();
队列q=新的LinkedList();
随机r=新随机();
//填充循环

对于(int j=1;j,由于数组是引用数据类型,因此可以在调用合并方法之前和之后打印数组。最好在
merge
方法之外打印它,因为通常使用合并方法的人不希望打印数组

因此,在您的主要方法中,您可以这样做:

    //check and some display
    System.out.println("Populating the Array List of Size 20");
    System.out.println("This list contains:");
    //extracting an array from the list
    int[] arrFromList = new int[a.size()]; 
    for(int i = 0; i < a.size(); i++) {
        arrFromList[i] = a.get(i);
    }   
    //printing the unsorted array
    System.out.println(Arrays.toString(arrFromList));
    System.out.println("Sorting");
    //actual merging
    mergeSort(arrFromList);
    System.out.println("Sorted array:");
    //printing the sorted array
    System.out.println(Arrays.toString(arrFromList));
//检查并显示一些内容
System.out.println(“填充大小为20的数组列表”);
System.out.println(“此列表包含:”);
//从列表中提取数组
int[]arrFromList=newint[a.size()];
对于(int i=0;i
//打印未排序的数组System.out.println(Arrays.toString(arrToSort));System.out.println(“排序”);//实际合并(arrToSort);可能会出现错误,因为合并方法需要int[],而我们给出int Integer[]。如果您想保存转换的效果,可以创建一个int值数组而不是ArrayList,这样就可以了。我将在编辑中编写main方法,只使用int[]作为答案的附件