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

سؤال عن مقارنة اداء نوعين من السورت

بدأه استثنائيه في 13 نوفمبر 2009 · 2 رد · 906 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته ,

أريد أن أسألكم عن نقطة لم أفهمها في هذا السؤال :

Write a program to compare the performance of two sorting techniques:

· Insertion sort

· Quicksort

the program outputs a table of timing values for the following cases for each type of sorting:

· An array of 1000 elements filled with integer values sorted in ascending order

· An array of 1000 elements filled with integer values in random order

· An array of 1000 elements filled with integer values sorted in descending order

· An array of 100000 elements filled with integer values sorted in ascending order

· An array of 100000 elements filled with integer values in random order

· An array of 100000 elements filled with integer values sorted in descending order

· An array of 10000000 elements filled with integer values sorted in ascending order

· An array of 10000000 elements filled with integer values in random order

· An array of 10000000 elements filled with integer values sorted in descending order

Bonus:

  • Allow the user to enter a number X from 1-1000.
  • Repeat each case X times.
  • Display the average time for each case for each sorting method.

فهمت اني سأطبع جدولين , جدول لكل نوع ترتيب ..

في كل جدول سأطبع timing values لكل حالة من الحالات التسع اعلاه ..

بالنسبة للtiming values فكرت في وضع كاونتر يزيد كلما حصلت عملية مقارنة او استبدال اثناء الترتيب ,

لكن سؤالي .. مثلا في هذه الحالات الثلاث :

· An array of 1000 elements filled with integer values sorted in ascending order

· An array of 1000 elements filled with integer values in random order

· An array of 1000 elements filled with integer values sorted in descending order

في المرة الاولى سأقوم بتعبئة المصفوفة ب 1000 رقم عشوائيا ثم ارتبها تصاعديا

و في المرة الثالثة سأقوم بتعبئة المصفوفة ب 1000 رقم عشوائيا ثم ارتبها تصاعديا

في المرة الثانية ماذا سأفعل ! فقط أقوم بتعبئة المصفوفة دون ترتيبها ؟ !

و دون ان اطبع timing values لها ؟

لا أريد كود .. فقط اريد ممن فهم المقصود من السؤال أن يشرح لي ..

شكرا جزيلا لكم

#2

مرحبا

التابعين التاليين يأخذان مصفوفة من الأعداد الصحيحة كوسيط

فيرتبانها ويعيدان الزمن المستغرق لعملية الترتيب

الترتيب بالحشر

public static long insertionSort(int[] nums){

int key,i;

long start = System.nanoTime();

for(int j=2;j<nums.length;j++){

key = nums[j];

i = j-1;

while((i>0)&&(nums>key)){

nums[i+1] = nums;

i--;

}

nums[i+1] = key;

}

return (System.nanoTime()-start);

}

الترتيب السريع

public static long quickSort(int[] nums,int left,int right){

int q;

long start = System.nanoTime();

if(left<right){

q = partition(nums,left,right);

quickSort(nums,left,q-1);

quickSort(nums,q+1,right);

}

return System.nanoTime()-start;

}

يمكنك الاستفادة منهما في برنامجك

بحساب الزمن اللازم لكل خوارزمية في كل حالة يمكنك مقارنة كفاءة كل منهما في إنجاز الترتيب

#3

في جميع الحالات ستقومين بترتيب المصفوفة تصاعديًا .

في الحالة الأولى المصفوفة التي ستقومين بترتيبها تكون مرتبة تصاعديًا مسبقًا ..

أما في الثانية المصفوفة تكون غير مرتبة ( ترتيب عشوائي )

في الحالة الثالثة المصفوفة مرتبة ترتيب تنازلي ..

سبحان الله وبحمده ... سبحان الله العظيم

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