اذهب إلى المحتوى

السؤال

نشر

ممكن مساعدة في تفريع هذه السكريبت (سي شارب):

Public static void Mergesort_Recursive (int[] num,int left,int right){ int mid,
if (right>left) {
mid=(right+left)/2;
Mergesort_Recursive(num,left,mid);
Mergesort_Recursive(num,mid+1,right);
Do merge(num,left,mid+1,right)
{{

Main code:

Random r = new random();
Int len=2000;
Int[]numbers1=new int[len];
Int[]numbers2=new int[len];
For(i=0;i<len;++i){ int temp= (int)r.next(10000);
numbers1[i]=temp;
numbers2 [i]=temp;}

 

هذه الخوارزمية هي خاورزمية الفرز بالدمج (فرق تسد)

Recommended Posts

  • 0
نشر

سأفترض أنك تعمل على معالج واحد..
هنا عندما نقسم أول مرة، فإننا نقسم البرنامج إلى جزئين، وبما أننا ننفذ البرنامج في معالج واحد بالتالي سوف يذهب التنفيذ إلى القسم اليساري ينتهي منه تماماً، ثم يعود ليرتب القسم اليميني. وهنا يمكننا الاستنتاج إنه في الوقت الذي يكون فيه المعالج يتولى أمر الجزء اليساري، يكون الجزء اليميني منتظر حتى ينتهي المعالج عمله مع الجزء اليساري وبالتالي هنا يمكننا الاستفادة من التفرعية ونقوم بتفريع القسمين الأوليين إلى ثريدين. لذا يكون:

Thread th1=new thread (() =>{
Mergesort.Mergesort_Recursive(numbers1,0,len/2)});
Thread th2=new thread (() =>{
Mergesort.Mergesort_Recursive(numbers1,,(len/2 )+1,len-1)});
Th1.start();th2.start();
Th1.join();th2.join();
Thread th1=new thread (() =>{
Mergesort.Domerge(numbers1,0, (len/2)+1,len-1);

عندما ندمج المصفوفتان يجب أن يكونا مرتبتين ولن يكونا مرتبتين حتى ينتهي التابع Mergesort_Recursive من عمله تماماً وحتى نضمن ذلك يجب وضع th1.join و th2.join من أجل عدم تنفيذ Domerge قبل أن ينتهي التابع Mergesort_Recursive وإلا فسوف تظهر اخطاء كثيرة ولن تترتب المصفوفة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...