在mergeSort函数中传递两个数组的main函数,一个原始数组和第二个临时数组,用于在其中存储排序值。
当我在合并排序后在主函数中打印 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
,第二个是我
在其中存储排序元素的临时数组。
在您的< code>merge中,每次都需要重新分配< code>arr,否则,之前的合并结果是无用的。(总是与您开始时的arr相同)
static void merge(int arr[],int temp[], int l, int mid, int r)
{
int i = l;
int j = mid+1;
for (int k = l; k < r + 1; k++) {
arr[k] = temp[k];
}
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++;
}
}
我试图在调试日志下面发出一个REST post调用。我尝试了不同的方法-信任许多不同风格的所有证书,将证书上载到java cacerts(JVM在加载时将证书显示为受信任的),但我仍然会变成failure_shake错误。下面的代码是否为您提供了有关问题的任何提示?使用Java8。
我正在制作一个简单的Led程序,它将成为我项目的一个库。我创建了四种方法,可以让您A)根据需要设置尽可能多的Led引脚,并将其作为输出。B) 在自定义时间闪烁Led灯。C) 打开LED。D) 关闭LED。如果我只运行void循环()中的方法,一切都正常。例如: 如果我运行上面的代码,它工作得很好,但是它保持循环,因为它显然是在循环中。所以我决定用串口启动串口com。在setup()中开始(9600
我在计算机课上遇到了合并排序的问题。我不断收到错误或返回原始ArrayList。 我相信合并排序涉及到将数组(列表)递归地对半拆分,直到只剩下一个元素,然后从这些单独的元素开始,按排序顺序合并它们。直到数组(列表)被排序为止。至于实际的排序部分,我试图在新的ArrayList中插入两半之间的较高值,直到它们都为空,在这种情况下,填充的ArrayList现在被排序。 这是我当前的代码: 我将感谢任何
问题内容: 随着泛型的引入,我不愿意执行instanceof或强制转换。但是在这种情况下,我看不到解决方法: 在上面的代码中,我知道ICacheables只能是MyObject或OtherObject的实例,根据此,我想将它们放入2个单独的映射中,然后进行进一步处理。 如果没有我的instanceof check,还有其他方法可以做到这一点,我很感兴趣。 谢谢 问题答案: 您可以使用双重调用。无可
奇怪的事情正在发生......我真的不明白为什么......这篇文章只有在将id参数类型从int更改为object时才有效。 我知道最好的方法是在url中设置值。。。然而我试图避免这件事。。。我的首选是将值作为json发布 public IHttpActionResult Gettest(int id)=不工作! {“Message”:“未找到与请求URI匹配的HTTP资源”http://loca