قد يشعر الفرز السريع بالسرعة الشديدة عندما تسمع هذا الاسم ، ولكن أسوأ حالة في تعقيد وقت الخوارزمية هو نفس فرز الإدراج. السبب في ذلك هو أن متوسط كفاءته أسرع من الفرز السريع. تحتاج إلى فتح مساحة تخزين جديدة مباشرة في الصفيف الأصلي. فكرة الفرز السريع بسيطة للغاية ، وهي اختيار كلمة رئيسية لتقسيم الصفيف الأصلي إلى جزأين G1 و G2. إلى K. طريقة الفرز في الكود هي وصف البيان الآن. تتمثل الخوارزمية الرئيسية في العثور على موقع K وتقسيم المصفوفة الأصلية إلى جزأين. طريقة GetPlaction هي جوهر الفرز السريع. مبدأ التنفيذ الخاص به يشبه إلى حد ما إدراج الفرز ولكنه يشبه بعض الشيء. في كل مرة ، يتم استخدام العنصر في الموضع النهائي ككلمة رئيسية. و j أكبر من العناصر الأساسية. المضي قدما. بعد الحلقات مثل هذا ، يتم فصل البداية 1 حسب الحجم.
نسخة الكود كما يلي:
الطبقة العامة QuickSort {
Public Int GetPlocation (int [] map ، int start ، int end) {
int core = map [end] ؛
int i = start-1 ؛
لـ (int j = start ؛ j <= end-1 ؛ j ++) {
if (map [j] <= core) {
i ++ ؛
int cache = map [j] ؛
الخريطة [j] = خريطة [i] ؛
خريطة [i] = ذاكرة التخزين المؤقت ؛
}
}
i ++ ؛
خريطة [نهاية] = خريطة [i] ؛
الخريطة [i] = core ؛
العودة أنا ؛
}
فرز الفراغ العام (int [] خريطة ، int start ، int end) {
إذا (ابدأ <end) {
int p = getPlaction (الخريطة ، ابدأ ، نهاية) ؛
فرز (خريطة ، ابدأ ، p-1) ؛
فرز (خريطة ، p+1 ، نهاية) ؛
}
}
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
int [] map = new int [] {4،1،5،3،7،12،65،7} ؛
Quicksort qs = new QuickSort () ؛
QS.Sort (MAP ، 0 ، MAP.LENGTH-1) ؛
لـ (int i = 0 ؛ i <map.length ؛ i ++) {
System.out.println (Map [i]) ؛
}
}
}