يحكي مثال هذه المقالة الطريقة التي تستخدم بها جافا فرز الفقاعات لفرز الصفيف. شاركه للجميع للرجوع إليه. التفاصيل هي كما يلي:
1. فرز الفقاعة:
استخدم فرز الفقاعات لفرز الصفيف
2. المفاهيم الأساسية:
تتم مقارنة رقمين مجازين بدوره ، وضع الجبهة العشرية ، والعدد الكبير وراء. هذا هو ، في الرحلة الأولى: قارن أولاً الأرقام الأولى والثانية ، وضع العشرية من قبل ، وعدد كبير. ثم قارن بين الأرقام الثانية والثالثة ، وضع العشري من قبل ، وبعد العدد الكبير ، تستمر ، حتى آخر رقمين ، وضع العشرية من قبل ، ويتم وضع العدد الكبير. في هذه المرحلة ، تم تعيين أكبر عدد حتى النهاية. في الرحلة الثانية: بدءًا من الزوج الأول (لأن الرقم الثاني من الرقم الثاني والرقم الثالث قد يتم تقليله ، لم يعد الرقم الأول أقل من الرقم الثاني) ، وضع العشرية بعد وضعه ، تمت مقارنته إلى أن يكون العدد قبل الأخير (الموضع الأول هو بالفعل أكبر). نتيجة لذلك ، كرر العملية أعلاه حتى يتم الانتهاء من الطلب النهائي.
ثالثًا ، أدرك الأفكار:
للتنفيذ المزدوج -loop ، يتم تعيين متغير الدورة الخارجية على I ، ويتم ضبط متغير الدورة الداخلية على J. إذا كانت هناك أرقام N تحتاج إلى فرزها ، يتم تكرار الدورة الخارجية N-1 مرات ، وتكرر الدورة الداخلية N-1 ، N-2 ، ... 1 مرة. العنصرين اللذين يقارنان في كل مرة يرتبطان بالدورة الداخلية J. يمكن التعرف عليهما باستخدام [J] و [J+1] بشكل منفصل ، وقيمة I 1،2 ، ... ، N-1 ، N-1 لقيمة كل i ، j هو 0،1،2 ، ... ني.
دع طول الصفيف ن:
1. بالمقارنة مع البيانات المجاورة ، إذا كانت البيانات السابقة أكبر من البيانات اللاحقة ، فسيتم تبادل البيانات.
2. وبهذه الطريقة ، تتمثل أكبر البيانات في "غرق" إلى موضع N-1 للمصفوفة بعد اجتياز واحد لبيانات N-1.
3. n = n-1 ، إذا لم يكن n 0 ، كرر الخطوتين الأوليين ، وإلا يتم الانتهاء من النوع.
4. تنفيذ رمز Java:
حزمة arraydemo ؛ int [] A = {2 ، 4 ، 76 ، 12 ، 34 ، 23 ، 86} ؛ * * يتم تعريف وظائف فرز الفقاعات على أنها استخدام ثابت ومريح. ++) { / / / هذا هو رقم التحكم لـ (int j = 0 ؛ j <A.Length -i ؛ j ++) {// j <A.Length -i ، عدد العناصر المقارنة إذا (a [j]> a [j + j + 1]) {int temp = a [j] ؛
5. تحليل الأداء:
إذا كانت الحالة الأولية لتسلسل السجل هي "تسلسل إيجابي" ، فسيجب فرز عملية الفرز الفقاعية فقط ، ويتم إجراء مقارنة N-1 فقط أثناء عملية الفرز بدون سجلات متنقلة ؛ 1)/2 مقارنات وسجلات يجب تنفيذها. لذلك ، فإن إجمالي التعقيد للوقت لفرز الفقاعات هو o (n*n).
6. تحسين الخوارزميات:
طريقة نقص وتحسين طريقة فرز الفقاعات:
أولاً ، أثناء عملية الفرز ، بعد تنفيذ الطلب النهائي ، على الرغم من أن البيانات قد تم فرزها بالكامل ، لا يمكن للبرنامج تحديد ما إذا كان سيتم إكمال الفرز. قيمة قيمتها الأولية ل non -non -non -non -non -non -non -non -non -non -non -non -nenough age. يتم تعيين كل نوع إلى 0 قبل بداية النوع. في بداية جولة جديدة من الفرز ، تحقق من هذا الشعار.
/ *** وظيفة فرز الفقاعات المحسنة*/ public static void bubblesort (int [] a) {boolean flag = true ؛ ؛ ؛
ثانياً ، في فرز الفقاعات ، قد يتم تبادل المسح عدد لا يحصى من التبادل ، أو قد يكون هناك تبادل بيانات واحد أو متعددة في خوارزمية فرز الفقاعات التقليدية وبعض الخوارزميات المحسنة في السنوات الأخيرة. لا تتم معالجة معلومات موقع تبادل البيانات. من أجل الاستفادة الكاملة من هذه المعلومات ، في فحص عالمي ، يمكنك إجراء فرز الفقاعات المحلي على كل بيانات ترتيب خلفية ، والتي تسمى فرز الفقاعات المحلي. خوارزميات فرز الفقاعات المحلية وفرز الفقاعات لها نفس التعقيد في الوقت المناسب ، وتحت حالة الترتيب الإيجابي والعكس ، فإن عدد الكلمات الرئيسية المطلوبة لعدد الكلمات الرئيسية والحركات هو نفسه تمامًا. نظرًا لأن عدد حركة البيانات في فرز الفقاعات المحلي وفرز الفقاعات هو نفسه دائمًا ، فإن عدد الكلمات الرئيسية المطلوبة لفرز الفقاعات المحلي غالبًا ما يكون أقل من فرز الفقاعات ، مما يعني أن فرز الفقاعات المحلي من المحتمل أن يقارن متوسط عدد المرات المتوسط. من التزوير. بالنسبة للبيانات المعطلة n ، عندما نكون في فرز الفقاعات ، إذا كانت بيانات K+1 ترتيب عكسي للبيانات ، يتم فرز بيانات K+1 إلى الأمام ، فهي تنتقل إلى الموضع الصحيح ، أي دعا بيانات K+1 السابقة اضبط في ترتيب إيجابي. لأن طريقة الفقاعات هذه تتفوق فقط على بيانات K+1 السابقة ، فإننا نسميها -الفقاعات المحلية
من المأمول أن يكون هذا المقال مفيدًا لتصميم برنامج Java للجميع.