gpt4 book ai didi

java - 使用 MergeSort 处理用户输入

转载 作者:行者123 更新时间:2023-11-29 06:00:51 25 4
gpt4 key购买 nike

我想对一组输入(来自命令行参数)的数字进行排序,在这里停留了 3 天却没有发现我的代码错误...真的很绝望...

谁能给我一个提示吗?

import java.util.Arrays;

public class MergeSorter
{

public MergeSorter(int[] anArray)
{
a = anArray;
}
public void sort()
{
if (a.length <= 1) return;
int[] first = new int[a.length / 2];
int[] second = new int[a.length - first.length];

System.arraycopy(a, 0, first, 0, first.length);
System.arraycopy(a, first.length, second, 0, second.length);

MergeSorter firstSorter = new MergeSorter(first);
MergeSorter secondSorter = new MergeSorter(second);
firstSorter.sort();
secondSorter.sort();
merge(first, second);
}
private void merge(int[] first, int[] second)
{
int iFirst = 0;
int iSecond = 0;
int j = 0;
while (iFirst < first.length && iSecond < second.length)
{
if (first[iFirst] < second[iSecond])
{
a[j] = first[iFirst];
iFirst++;
}
else
{
a[j] = second[iSecond];
iSecond++;
}
j++;
}
System.arraycopy(first, iFirst, a, j, first.length - iFirst);
System.arraycopy(second, iSecond, a, j, second.length - iSecond);
}
private int[] a;

public static void main(String[] args)
{
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
{
a[i] = Integer.parseInt(args[i]);
}
MergeSorter sorter = new MergeSorter(a);
sorter.sort();
System.out.println(Arrays.toString(a));
}
}

最佳答案

如果这不是关于合并排序的练习,您可以简单地使用 Arrays.sort(array);,这是一个合并排序。

要按降序排序,您可以指定自己的比较器。

Arrays.sort(array, new Comparator<Integer>()
{
public int compare(Integer i1, Integer i2)
{
return -i1.compareTo(i2);
}
});

关于java - 使用 MergeSort 处理用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160971/

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