以更有效的方式在Java中进行合并和排序

时间:2014-03-08 21:51:09

标签: java sorting merge arrays

所以,我正在尝试为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

0 个答案:

没有答案