所以,我正在尝试为Java做这个练习。我必须填写代码并编写更有效的合并和排序方法。问题是,我没有完全得到编码合并和排序的概念。我的意思是,我将阵列分成更小的数组,然后比较它们自己的数字。但我无法正确实施。以下是练习说明:
public class MainClass
{
public static void mergeSort( int[] a, int low, int high )
{
以下是我可以编辑的内容:
if ( low == high )
return;
int mid = ( low + high ) / 2;
mergeSort( a, low, mid );
mergeSort( a, mid + 1, high );
merge( a, low, mid, high );
}
public static void merge( int[] a, int low, int mid, int high )
{
int[] temp = new int[ high - low + 1 ];
int i = low, j = mid + 1, n = 0;
while ( i <= mid || j <= high )
{
if ( i > mid )
{
temp[ n ] = a[ j ];
j++;
}
else if ( j > high )
{
// write code here
}
else if ( a[ i ] < a[ j ] )
{
// write code here
}
else
{
// write code here
}
n++;
}
for ( int k = low ; k <= high ; k++ )
a[ k ] = temp[ k - low ];
}
之后我无法编辑剩下的代码:
public static void main( String[] args )
{
Random r = new Random();
int[] array = new int[ 25 ];
System.out.print( "Before: " );
for ( int i = 0 ; i < array.length ; i++ )
{
array[ i ] = r.nextInt( 125 ) - 25;
System.out.print( array[ i ] + " " );
}
mergeSort( array, 0, array.length - 1 );
System.out.print( "\n After: " );
for ( int t : array )
System.out.print( t + " " );
}
}
所以,我需要大致了解我必须填写的代码所在的位置。我在概念上要做什么。代码示例很好,但我不希望为我完成工作。我希望能够弄明白。
Thx,Sarah