الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دالة الmerge sorting ...في c#

مغلق
بدأه ابو خلف في 3 يونيو 2007 · 0 رد · 395 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم...

كل شخص عندما يبحث عن داله ... ويجدها بعد مدة من الزمن ....وبعد عناء البحث ...

يحب ان يطلع عليها زملائه ...

وها أنا افعل ذلك :D

// 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 <= a[mid] )
	{
	  b[tmp_pos] = a;
	  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 + 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 = b;
	right = right - 1;
  }
}

والسلامممممممممممممممممممم

هذا الموضوع مغلق.

مواضيع مشابهة