Java 如何打印合并排序的ArrayList?
我几乎已经完成了我的作业,但我似乎不知道如何打印我的排序数组列表。它现在只打印出我原来的20个随机数的数组列表。我是否将打印放在合并或合并排序方法中?还是我完全做了别的事情?任何帮助都将不胜感激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
//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[]作为答案的附件