【发布时间】:2021-12-23 02:28:21
【问题描述】:
在mergeSort函数中传递两个数组的主函数,一个原始数组和第二个临时数组,用于在其中存储排序值。
当我在合并排序后在主函数中打印 temp 时,我得到的输出为 temp = [3 2 6 4 7 8 5 8 1]。
static void main(String args[])
{
int arr[] = {6,4,7,8,5,3,2,8,1};
int temp[] = new int[arr.length];
for(int i=0;i<arr.length();i++)
{
temp[i] = arr[i];
}
mergeSort(arr, temp, 0, arr.length-1);
for(int num : temp)
{
System.out.print(num+" ")
}
}
//merge function comparing array and assigning to a new temp array.
static void merge(int arr[],int temp[], int l, int mid, int r)
{
int i = l;
int j = mid+1;
int index=l;
while(i<=mid && j<=r)
{
if(arr[i]<=arr[j])
{
temp[index] = arr[i];
i++;
}
else
{
temp[index] = arr[j];
j++;
}
index++;
}
while(i<=mid)
{
temp[index] = arr[i];
i++;
index++;
}
while(j<=r)
{
temp[index] = arr[j];
j++;
index++;
}
}
//mergeSort function
static void mergeSort(int arr[],int temp[], int l, int r)
{
if(l<r)
{
int mid = l + (r-l)/2;
mergeSort(arr,temp,l,mid);
mergeSort(arr,temp,mid+1,r);
merge(arr,temp,l,mid,r);
}
}
我在 mergeSort 函数中传递了两个数组。一个是原始的 arr,第二个是 temp 数组,我在其中存储排序的元素。
【问题讨论】: