Parsi Coders

نسخه‌ی کامل: الگوریتم مرج سورت
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.

کد:
// array of integers to hold values

private int[] a = new int[100];

private int[] b = new int[100];



// number of elements in array

private int x;



// Merge Sort Algorithm

public void sortArray()

{

  m_sort( 0, x-1 );

}



public void m_sort( int left, int right )

{

  int mid;



  if( right > left )

  {

    mid = ( right + left ) / 2;

    m_sort( left, mid );

    m_sort( mid+1, right );



    merge( left, mid+1, right );

  }

}



public void merge( int left, int mid, int right )

{

  int i, left_end, num_elements, tmp_pos;



  left_end = mid - 1;

  tmp_pos = left;

  num_elements = right - left + 1;



  while( (left <= left_end) && (mid <= right) )

  {

    if( a[left] <= a[mid] )

    {

      b[tmp_pos] = a[left];

      tmp_pos = tmp_pos + 1;

      left = left +1;

    }

    else

    {

      b[tmp_pos] = a[mid];

      tmp_pos = tmp_pos + 1;

      mid = mid + 1;

    }

  }



  while( left <= left_end )

  {

    b[tmp_pos] = a[left];

    left = left + 1;

    tmp_pos = tmp_pos + 1;

  }



  while( mid <= right )

  {

    b[tmp_pos] = a[mid];

    mid = mid + 1;

    tmp_pos = tmp_pos + 1;

  }



  for( i = 0; i < num_elements; i++ )

  {

    a[right] = b[right];

    right = right - 1;

  }

}