Java 合并排序与选择排序

Java 合并排序与选择排序,java,algorithm,sorting,mergesort,selection-sort,Java,Algorithm,Sorting,Mergesort,Selection Sort,我写了这两种排序算法,似乎选择排序比合并排序快,这肯定不对吧?我的测试数据是10个大小为5000到50000的随机数组,其中数组中最大可能的数字是100 以下是我的选择排序实现: inti,j,iMin; int n=c.长度; startTime=System.currentTimeMillis(); 对于(i=0;i

我写了这两种排序算法,似乎选择排序比合并排序快,这肯定不对吧?我的测试数据是10个大小为5000到50000的随机数组,其中数组中最大可能的数字是100

以下是我的选择排序实现:

inti,j,iMin;
int n=c.长度;
startTime=System.currentTimeMillis();
对于(i=0;i
theDelay()
方法只是延迟排序算法在其中运行的线程,这样一个可视图形就可以绘制到JPanel来显示正在运行的排序,在这个测试用例中,它被忽略了,因此不会影响我的排序时间

以下是我的合并排序实现:

public void mergeSort(int[]d)抛出InterruptedException{
startTime=System.currentTimeMillis();
合并排序(d,0,d.length-1);
endTime=System.currentTimeMillis();
总时间=结束时间-开始时间;
//System.out.println(“合并”+总时间);
}
私有void MergeSort(int[]数组,int low,int high)抛出InterruptedException{
int[]temp=newint[array.length];
如果(低<高){
int middle=低+(高-低)/2;
合并排序(数组、低、中);
合并排序(数组,中间+1,高);
重新合并(阵列、温度、低、中、高);
}
}
私有无效重合并(int[]array2,int[]temp,int low,int middle,int high)抛出中断异常{
对于(inti=low;i您有:

private void MergeSort(int[] array, int low, int high) throws InterruptedException
{
    int[] temp = new int[array.length];

当然,在递归的每一步将长度
5000
的数组分配到
50000
会使算法变得更慢。试着重用相同的临时数组。

所以我认为合并应该比选择快得多?@FutureSystemsAnalyst-是的。对于那些大小的数组,这应该是值得注意的。您的实现在这里是错误的,因为您执行了大量无用的内存分配。