
- بواسطة x32x01 ||
يعنى ايه Quick Sort وازاى بيعتبر من افضل Algorithms فى Sorting؟
قبل ما نبدأ فى Quick Sort، محتاجين نفهم Algorithm مهم اسمه Divide and Conquer 
- الAlgorithm ده ببساطة عبارة عن انك بتقسم المشكلة بتاعتك لاجزاء صغيرة لحد ما توصل لجزء اسمه Base Case، وده بيكون الحل بتاعنا
- لما توصل للBase Case، يبقى انت كده وصلت للحل بتاع المشكلة
- بعد كده بتروح تجمع كل الاجزاء الصغيرة دى مع بعض، وبهذا تكون حليت المشكلة بتاعتك بالكامل
استفادة Divide and Conquer فى Quick Sort
- الAlgorithm ده هو المبدأ اللى بيشتغل عليه Quick Sort
- بيقسم الArray بتاعتنا لأجزاء صغيرة، كل جزء اسمه Base Case
- الBase Case بيكون عنصر واحد فى الArray سواء بيحتوى قيمة أو لأ
- كل جزء من الاجزاء دى بيكون فى مكانه الصحيح لو الArray مترتبة
- بعد كده بيرجع يجمع الاجزاء الصغيرة دى مع بعض، وبكده كل عنصر فى مكانه الصحيح وبيبقى الArray مرتب
مثال عملي على Quick Sort
تخيل عندك Array مش مترتبة فيها 7 عناصر من 1 لـ 7 وعايز ترتبها باستخدام Quick Sort:- هتاخد رقم عشوائي من الArray وليكن الرقم الأول، واللى هنسميه Pivot
- نفترض الرقم ده هو 4
- هتحاول تخلي الرقم ده فى مكانه الصحيح فى الArray
- ده يحصل لما كل الأرقام على يمين الرقم تكون أكبر منه، والأرقام على شماله تكون أصغر منه
- لو الArray مش مترتبة، هتكون الأرقام على يمين الرقم 4 أكبر منه بس مش مرتبة، والأرقام على شماله أقل منه بس مش مرتبة
- بعد المرحلة دى، الرقم 4 هيبقى فى مكانه الصحيح لو الArray مترتبة
- هنا بييجي دور Recursion
- هنعمل نفس الخطوات على كل جزء من الArrayالغير مرتب:
- مجموعة الأرقام على شمال الرقم 4
- مجموعة الأرقام على يمين الرقم 4
- لما نخلص كل الخطوات دى، كل رقم في مكانه الصحيح لو الArray مترتبة
- بعد كده نجمع كل الأجزاء مع بعض ويبقى الArray مرتب تمام
مميزات Quick Sort
- مش بيحتاج Extra Space أو مساحة زيادة من الMemory
- أسرع من Selection Sort
- في بعض الحالات، أسرع من Merge Sort (هنشرح Merge Sort فى مقالة لوحدها وازاى Quick Sort بيكون أسرع)

- بيستفيد من مبدأ Divide and Conquer
- بيقسم الArray لأجزاء صغيرة ويحط كل عنصر فى مكانه الصحيح
- سريع وفعال خصوصًا مع Arrays كبيرة
التعديل الأخير: