نوع الفقاعة
من نوع الفقاعة ، عندما رأيت هذه الخوارزمية ، تذكرت قولًا "العشرية تطفو ، وتغرق الأرقام الكبيرة". من خلال مقارنة الطبقة حسب الطبقة ، تطفو العشرية على السطح ، والأعداد الكبيرة "تغرق الحجارة في قاع الماء". هذا يحقق تأثير الفرز. فرز الفقاعات هو خوارزمية فرز بسيطة. إنه يزور التسلسل المراد فرزه بشكل متكرر ، ويقارن عنصرين في وقت واحد ، ويقايذهما إذا كانت غير صحيحة. يتم تكرار عمل زيارة التسلسل حتى لا يلزم أي تبادل ، أي أنه تم فرز التسلسل. أصل هذه الخوارزمية هو أنه كلما كان العنصر الأصغر "يطفو" ببطء إلى أعلى التسلسل عبر التبادل.
إن تشغيل خوارزمية فرز الفقاعة كما يلي:
1. قارن العناصر المجاورة. إذا كان الأول أكبر من الثانية ، فتبادلهما للاثنين.
2. قم بنفس العمل لكل زوج من العناصر المجاورة ، بدءًا من الزوج الأول إلى الزوج الأخير في النهاية. في هذه المرحلة ، يجب أن يكون العنصر الأخير هو أكبر عدد.
3. كرر الخطوات المذكورة أعلاه لجميع العناصر باستثناء آخرها.
4. استمر في تكرار الخطوات المذكورة أعلاه لعناصر أقل وأقل في كل مرة حتى لا توجد أزواج من الأرقام التي يجب مقارنتها.
مخطط عملية فرز الفقاعة:
رمز مثال
الفئة العامة bubblesort {public static int [] bubblesort (int [] array) {for (int i = 0 ؛ i <array.length ؛ i ++) {for (int j = 0 ؛ j <array.length-i-1 ؛ j ++) {if (array [j] صفيف [j] = صفيف [j+1] ؛ صفيف [j+1] = temp ؛ }} system.out.println ("th"+(i+1)+"sorting") ؛ لـ (int k = 0 ؛ k <array.length ؛ k ++) {system.out.print (array [k] "" ") ؛ } system.out.println () ؛ } صفيف الإرجاع ؛ } / ** * param args * / public static void main (string [] args) {int [] array = {7،3،9،5،6،8،1} ؛ Bubblesort (صفيف) ؛ }}نتيجة الطباعة:
الطلب الأول 3 7 5 6 8 1 9Sorting 2nd Order 3 5 6 7 1 8 9 9 5 6 1 7 8 9Sorting 4th Order 3 5 1 6 7 8 1 3 5 6 7 8 9SORTING 7th Order 1 3 5 6 7 8 9Sorting 5th Order 3 5 6 7 8 9SORTING 6th Order 1 3 5 6 7 8 9STORTING 7th 1 3 5 6 7 8 9Sorting 5th Order 3 5 6 7 8 9Sorting 5th Order 3 5 6 7 8 9Sorting 5th Order 3 5 6 7 8 9Sorting 5th Order 3 5 6 7 8
البحث الثنائي
بعد فرز الطلب ، نحتاج أيضًا إلى العثور على البيانات التي نريدها. البحث ثنائي التفرع هو خوارزمية شائعة الاستخدام ، وقسم ، والخوارزمية الأساسية. البحث الثنائي هو البحث والمقارنة من الموضع الأوسط للبيانات المصنفة ، على غرار الزوج الأوسط من العصا الخشبية ، لذلك يطلق عليه أيضًا طي ونصف. إنها طريقة بحث أكثر كفاءة.
[متطلبات البحث الثنائي]: 1. يجب اعتماد بنية التخزين المتسلسلة. 2. يجب ترتيب المفتاح بطريقة منظمة وفقًا لحجم الكلمة الرئيسية.
[الايجابيات والعيوب] تتمثل مزايا طريقة البحث نصف النغمة في أن لديها أوقات مقارنة أقل ، وسرعة بحث سريعة ، ومتوسط أداء جيد ؛ عيبه هو أن الجدول المراد البحث عنه هو جدول مرتبة ومن الصعب إدخال وحذف. لذلك ، فإن طريقة التراجع نصف مناسبة للقوائم المنظمة التي لم يتم تغييرها بشكل متكرر وغالبًا ما يتم العثور عليها.
[الفكر الخوارزمية] أولاً ، قارن الكلمات الرئيسية المسجلة في الموضع الأوسط للجدول مع الكلمات الرئيسية للبحث. إذا كان الاثنان متساويين ، فسيكون البحث ناجحًا ؛ خلاف ذلك ، سيتم تقسيم الجدول إلى طاولتين فرعيتين مع سجل الموضع الوسيط. إذا كانت الكلمات الرئيسية المسجلة في الموضع الأوسط أكبر من الكلمة الرئيسية للبحث ، فحرف مزيد من البحث عن الطاولة الفرعية السابقة ، وإلا البحث عن الجدول الفرعي التالي.
كرر العملية أعلاه حتى يتم العثور على السجل الذي يلبي الشروط بحيث يكون البحث ناجحًا ، أو حتى لا يكون الطاولة الطفل موجودًا ، فإن البحث غير ناجح في هذا الوقت.
[تعقيد الخوارزمية] على افتراض أن طول الصفيف هو N ، فإن تعقيد الخوارزمية هو o(log(n)), وأسوأ تعقيد الوقت هو O(n)。
رمز مثال
package com.somnus.array ؛/** * طريقة البحث الثنائي * Author compaq * */public class binarysearch {public static int binarysearch (int [] artray ، int value) {int low = 0 ؛ int High = Array.Length-1 ؛ int middle = 0 ؛ بينما (منخفضة <= عالية) {middle = (low+high)/2 ؛ // 0 6 4 6 6 6 for (int i = 0 ؛ i <array.length ؛ i ++) {system.out.print (Array [i]+"") ؛ if (i == middle) // 3 5 6 اطبع SELIMITER مباشرة بعد النقطة الوسطى {system.out.print ("##") ؛ }} system.out.println () ؛ if (Array [middle] == value) {return middle ؛ } if (value <array [middle]) {High = Middle - 1 ؛ } if (value> Array [middle]) {low = middle + 1 ؛ }} return -1 ؛ } / ** * param args * / public static void main (string [] args) {int [] array = {7،3،9،5،6،8،1} ؛ int [] array1 = bubblesort.bubblesort (صفيف) ؛ int index = BinarySearch (Array1،1) ؛ System.out.println ("Local:"+INDEX) ؛ }}نتيجة الطباعة:
1ST Order 3 7 5 6 8 1 9Sorting 2nd Order 3 5 6 7 1 8 9 SORTING 3 5 6 1 7 8 9SORTING 4th Order 3 5 1 6 7 8 9SORTING 5th Order 3 1 5 6 7 8 9Sorting 6 3 9 9 9 9 9 9 9 9 9
التحليل والملخص
في خوارزميات البحث ، يكون الانقسام هو الأسرع ، ولكن يجب أن يكون تسلسلًا مرتبة. هذه هي أسس الخوارزميات ، وما زلنا بحاجة إلى بذل الكثير من الجهد في التجربة وتلخيص وامتصاص وتعلم خوارزمية.