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

طلب طريقة الترتيب ب quick sort و shell sort

مغلق
بدأه Amjad.IT في 12 يناير 2007 · 6 رد · 14,272 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أريد أن اعرف كيفية الترتيب بالطريقتين الكويك والشيل

ما أريده هو الخطوات التي يجب ان اتبعها حتى ارتب مصفوفة معينة

لا أريد كود او متغيرات او ما شابه، بل اريد الطريقة بالكلمات.

مثلاً:

selection sort:

في المرة الأولى: نبحث عن اصغر رقم ونستبدله مع اول رقم

في المرة الثانية: نبحث عن أصغر رقم (باستثناء الأول) ونستبدله مع ثاني رقم

في المرة الثالثة: نبحث عن اصغر رقم (باستثناء الأول والثاني) ونستبدله مع ثالث رقم

وهكذا حتى النهاية.

ما أريده هو كيفية الترتيب باستخدام quick و shell (مع توضيح عن gap) مع مثال توضيحي، أريد الحل حالاً لانه عندي امتحان غداً

ساعدوني وجزاكم الله خيراً.

بالنسبة للـ gap لا اعرف كيف تكتب بالضبط، ربما gab او gap ... لا أعرف

1
#2

up

#3

الاخ abc_amjad

بالنسبة للـquick sort فهي تعتمد التي :

1- ناخذ اول عنصر ونقارنه باخر عنصر

2- اذا كان الاول اكبر من الاخير نقوم باستبدالهم والا فلا

3- نقوم في الدورة الثانية بمقارنة الثاني مع الاخير فان كان الثاني هو الاكبر نستبدلهم والا فلا

ولكن في هذه الطريقة نستخدم 2 loop واليك هذا الكود الصغير الذي سيساعدك على فهم الطريقة

int a, b,temp;

for (a = array.length - 1; a > 0; --a)

for (b = 0; b < a; ++B)

if (array > array[a])

{

temp = array;

array = array[a];

array[a] = temp;

038.gif
#4

خوارزمية الترتيب السريع Quick Sort Algorithm

إن خوارزمية الترتيب السريع بسيطة نظرياً لكن من الصعب جداً تحويلها إلى كود.

تتألف العودية في هذه الخوارزمية من الخطوات الأربعة التالية:

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

2. خذ عنصراً من المصفوفة ليعمل كموجِّه (يستخدم عادة العنصر الأكثر محاذاة إلى اليسار في المصفوفة).

3. نقسم المصفوفة إلى جزأين إحدهما يحتوي على العناصر الأكبر من الموجه والآخر يحتوي على العناصر الأصغر من الموجه.

4. نقوم بتكرار الخوارزمية عودياً لجزأي المصفوفة الأصلية.

تعتبر خوارزمية الترتيب السريع من أسرع خوارزميات الترتيب الشائعة، من الممكن طبعاً كتابة خوارزمية ترتيب لمجموعة معينة من البيانات بحيث تكون أسرع من هذه الخوارزمية إلا أن خوارزمية الترتيب السريع تعتبر الأسرع على الإطلاق في حالات الترتيب العامة (مجموعات بيانات مختلفة).

يبقى أن أذكر أن تطبيق خوارزمية الترتيب السريع على الأجهزة ذات الذاكرة المحدودة يعتبر خياراً غير صائب لأنها قد تحتاج إلى مساحة لا بأس بها في حالات البيانات الضخمة.

المصدر

:)

اللهم طهر أرض فلسطين من العملاء والخونة

#5

شكرا لكم، وبارك الله فيكم على الاستجابة

نحن تعلمنا، أن نأخذ الرقم الموجود في المنتصف

عند ترتيب الأرقام، بحيث تكون القيم الأكبر في جزء، والقيم الأصغر في جزء آخرـ نتبع آلية معينة لعمل ذلك، ما هي؟؟ (اعتقد اننا نبدأ من طرفي المصفوفة ونسير إلى المنتصف)

عندما نقسم المصفوفة إلى جزأين، أين يذهب الموجه ؟؟

هل هذا كل ما يتعلق بال كويك سورت؟؟

تم تعديل هذه المشاركة بواسطة abc_amjad في 12 يناير 2007 في 22:46

#6

حسناً ..

عندما نقسم المصفوفة إلى جزئين نعامل كل جزء على أنه مصفوفة جديدة ونتصرف معه بنفس الطريقة التي تصرفناها مع المصفوفة الأم ..

يعني نختار موجه جديد لكل مصفوفة ومن ثم نقسمها إلى مصفوفتين وهكذا إلى أن ننتهي ونصل إلى شرط التوقف ..

هذا لأن ال Quick sort هي خوارزمية من نوع Divide and conquer ( فرق تسد)

اللهم طهر أرض فلسطين من العملاء والخونة

#7

شكراً لك

بارك الله فيك

لقد رجعت إلى مصادر أخرى وحصلت على ما أريد.

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

هذا الموقع رائع لتوضيح الترتيب sorting بطرق كثيرة:

http://www.cs.pitt.edu/~kirk/cs1501/animations/Sort1.html

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

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