当前位置: 代码迷 >> Java相关 >> 为啥归并排序时间比插入排序时间长?哪里出错了
  详细解决方案

为啥归并排序时间比插入排序时间长?哪里出错了

热度:51   发布时间:2016-04-22 20:56:41.0
为什么归并排序时间比插入排序时间长?~~哪里出错了
private static void mergeArray(int[] a,int first,int mid,int end,int[] b)
{
int i = first, j = mid+1,
m = mid, n = end, k = 0;

while(i<=m&&j<=n){
if(a[i]<=a[j])
b[k++] = a[i++];
else
b[k++] = a[j++];
}

while(i<=m)
b[k++] = a[i++];
while(j<=n)
b[k++] = a[j++];

for (int k2 = 0; k2 < k; k2++) {
a[first+k2] = b[k2];
}
}
private static void mergeSort(int[] a,int first,int end,int[] b){
if(first < end){
int mid = (first + end)/2;
mergeSort(a, first, mid, b);
mergeSort(a, mid+1, end, b);
mergeArray(a, first, mid, end, b);
}
}
上为归并算法程序~~~~
private static void InsertMethod(int[] array){
int key = 0;
for (int j = 1; j < array.length; j++) {
key = array[j];
int i = j-1;
while(i>=0&&array[i]>key){
array[i+1] = array[i];
i--;
}
array[i+1] = key;
}
}
上为插入排序程序~程序应该没错吧,能正常排序
声明了两个静态的a,b数组,数组长度为30左右的时候,归并排序时间为插入排序的十几倍左右,本来想是因为数据长度不够长,随增大了数组长度,但是差距更明显了- - 。  可能是测试方法有问题,弱弱的问一句怎么获取微秒级的系统时间~~


------解决思路----------------------
楼主可以用System.nanoTime() 纳秒试试,不过这些还是跟操作系统有关系的,可能并不是那么非常准确
------解决思路----------------------
你怎么测试的?把测试的代码也贴上来呗
  相关解决方案