gpt4 book ai didi

java - 我在Mergesort算法中哪里出错了

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:26:39 24 4
gpt4 key购买 nike

我正在学习一些算法,目前我正在尝试将 Mergesort 实现到 Java 中。这是我的代码:

public class Mergesort {

/**
* @param args
*/
public static void main(String[] args) {
int []a = {12,34,6543,3,6,45,23,677,56,67,3,4,54,5};
sort(a);
for(int i:a)
{
System.out.println(i);
}

}
private static void merge(int[]a,int[]b,int[]c)
{
int i = 0, j = 0, k = 0;
while((i < b.length) && (j < c.length))
{
if(b[i] < c[j])
{
a[k++] = b[i++];
}
else
{
a[k++] = c[j++];
}

while( i < b.length)
{
a[k++] = b[i++];
}

while( j < c.length)
{
a[k++] = c[j++];
}
}

}

public static void sort (int[]a)
{
if(a.length > 1)
{

int m = a.length / 2;
int[]b = new int[m];
int[]c = new int[a.length-m];

for(int i = 0; i < m; i++)
{
b[i] = a[i];
}
for(int i = m; i <a.length; i++ )
{
c[i-m] = a[i];
}

sort(b);
sort(c);

merge(a,b,c);
}
}
}

这是输出:

6543
6
23
45
56
677
67
4
5
54

我是从教程里抄来的,不知道错在哪里。我的第二个问题是:

这是什么意思:a[k++] == b[i++];

我知道我们正在将 a[k](k = a 中的位置)的值更改为 b[i],但为什么是++?

我认为这意味着您将值增加 1?感谢您的阅读。

最佳答案

这是什么意思:

a[k++] == b[i++]; 

++ 是增量运算符。请参阅 Assignment, Arithmetic, and Unary Operators 下的一元运算符

这相当于

a = a + 1

所以

a[k++] == b[i++]; 

相同
a[k] == b[i]; 
k = k + 1;
i = i + 1;

Wny is my code not working 是题外话。请调试并询问任何具体问题

关于java - 我在Mergesort算法中哪里出错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24432292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com