合併排序算法減少了2個數字集合中的原始數組,並將2個集合(1個集合×1個集合)之後,2個集合之後,2個2個,3個3個等等之後放在最後。排序。 問題是:如果第二個mergeSort(),當調用mergeSort()和merge時,該算法(Java中的實現)如何對數組進行排序,而不是將輸出分配給數組?返回值如何合併排序
我所說的算法:
int[] a = {4 , 8, 19, 7};
int[] sorted_array = mergeSort(a, 0, a.length-1);
static void mergeSort(int[] a)
{
return mergeSort(a, 0, a.length - 1);
}
static int[] mergeSort(int[] a, int i, int f)
{
if(i < f)
{
int h = (f + i)/2;
mergeSort(a, i, h);
mergeSort(a, h + 1, f);
merge(a, i, h, f);
}
return a;
}
static void merge(int[] a, int i, int h, int f)
{
int[] aux = new int[f - i + 1];
int k = 0, iaux = i, jaux = h + 1, kaux;
while(iaux <= h && jaux <= f)
{
if(a[iaux] < a[jaux])
{
aux[k] = a[iaux];
iaux++;
}
else
{
aux[k] = a[jaux];
jaux++;
}
k++;
}
while(iaux <= h)
{
aux[k] = a[iaux];
iaux++;
k++;
}
while(jaux <= f)
{
aux[k] = a[jaux];
jaux++;
k++;
}
kaux = 0;
for(iaux = i; iaux <= f; iaux++)
{
a[iaux] = aux[kaux];
kaux++;
}
}
謝謝。
我認爲你的意思是懷疑而不是兄弟。 – DguezTorresEmmanuel
哦,是的,我的英語... 謝謝。 – user3270009
[是Java的「傳遞引用」?](http://stackoverflow.com/questions/40480/is-java-pass-by-reference)可能的重複(不是重複的意思,它是相同的問題,而是大概這個答案會回答你的問題)。 – Dukeling