我昨天正在努力实现一个快速排序,然后我运行它,期望比Mergesort更快的运行时间(我也已实现).我运行了两个,虽然快速排序对于较小的数据集<100个元素更快(并且我确实验证了它的工作原理),但mergesort很快就成为了更快的算法.有人告诉我,quicksort几乎总是比mergesort"更快",我理解这个话题有一些争论,但我至少预计它会比这更接近.对于数据集> 10000个元素,mergesort的速度提高了4倍以上.这是预期的,还是我的快速排序代码中有错误?
归并排序:
public static void mergeSort(int[ ] e)
{
if (e.length <= 1) return;
int[] first = new int[e.length/2];
int[] second = new int[e.length - first.length];
System.arraycopy(e, 0, first, 0, first.length);
System.arraycopy(e, first.length, second, 0, second.length);
mergeSort(first);
mergeSort(second);
System.arraycopy(merge(first, second), 0, e, 0, e.length);
}
private static int[] merge(int[] first, int[] second) {
int iFirst = 0;
int iSecond = 0;
int iCombined = 0;
int[] combined = new int[first.length + second.length];
while(iFirst < first.length && iSecond …Run Code Online (Sandbox Code Playgroud) 我正在写一个小游戏,一个JFrame包含主游戏,另一个JFrame显示得分.问题是,当我完成构建它们时,得分JFrame总是最终集中!我试过调用scoreDisplay.toFront(),scoreDisplay.requestFocus(),甚至:
display.setState(JFrame.ICONIZED);
display.setState(JFrame.NORMAL);
Run Code Online (Sandbox Code Playgroud)
有没有办法让这项工作?在此先感谢,约翰穆拉诺