تصف هذه المقالة طريقة تنفيذ فرز الكوكتيل في فرز Java Exchange. شاركه للرجوع إليه. التفاصيل كما يلي:
يعد فرز الكوكتيل ، أي فرز الفقاعات الاتجاهية ، فرز تحريك الكوكتيل ، فرز التحريك (يمكن اعتباره أيضًا تشوهًا في فرز الاختيار) ، فرز التموجات ، فرزًا ذهابًا وإيابًا أو فرز الساعة السعيدة ، هو تشوه في فرز الفقاعة. الفرق بين هذه الخوارزمية وفرز الفقاعات هو أنه عند الفرز ، يتم فرزه في اتجاهين في التسلسل.
يختلف عن فرز الفقاعات:
فرز الكوكتيل يعادل تشوه طفيف في فرز الفقاعة. الفرق من انخفاض إلى مرتفع ثم مرتفع إلى منخفض ، في حين أن نوع الفقاعة يقارن فقط كل عنصر في التسلسل من منخفض إلى مرتفع. يمكن أن يحصل على أداء أفضل قليلاً من نوع الفقاعة لأن فرز الفقاعة لا تتم مقارنته إلا من اتجاه واحد (من منخفض إلى مرتفع) ويتحرك فقط عنصرًا واحدًا لكل حلقة.
مع أخذ التسلسل (2،3،4،5،1) كمثال ، يتطلب فرز الكوكتيل زيارة واحدة فقط للتسلسل لإكمال الفرز ، ولكن أربع مرات في حالة استخدام الفقاعة. ومع ذلك ، في حالة تسلسل فوضوي ، فإن كفاءة فرز الكوكتيل وفرز الفقاعة سيئة للغاية.
أسوأ وقت التعقيد o (n^2)
تعقيد الوقت الأمثل O (N)
متوسط الوقت التعقيد o (n^2)
الصورة الديناميكية لفرز الكوكتيل هي كما يلي:
تحليل الكود:
حزمة com.baobaotao.test ؛ = Array.Length ؛ J]> Array [j+1]) {swap (Array ، J ، J+1) ؛ <array [j-1] {swap (Array ، J-1 ، J) ؛ static void cocatailsortflag (int [] {int length = Array.Length ؛ ؛ = false ؛ ؛ يتم تبادلها الواردة B * param c التي سيتم تبادلها في تبادل c */ public static void (int [] a ، int b ، int c) {int temp = 0 ؛ B]> a [c]) {temp = a [b] void printarr (int [] array) {for (int c: array) {system.out.print (c + "") ؛ int [] number = {11،95،45،15،78،84،51،24،12} ؛ Cocatailsort (Number) ؛تحليل النتائج:
11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95 11 12 15 24 45 51 78 84 95 ************ *** 11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95
يمكن أن نرى أن عدد مرات فرز الكوكتيلات أقل بكثير من نوع الفقاعة العادية. يستغرق الأمر 4 مرات فقط ، ويستغرق فرز كوكتيل الشعار فقط 3 مرات فقط لإكمال الفرز.
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.