نوع الفقاعة
مبدأ الفقاعة هو جعل العنصر الأكبر أو أصغر عنصر "تعويم"
أدخل الفرز ، حدد الفرز ، فرز سريع ، فرز الفقاعة كلها نوع المقارنة
الأفكار
قارن بين الأرقام المجاورة واحدة تلو الأخرى ، وضع العشرية في المقدمة والأعداد الكبيرة في الظهر.
Step1: قارن بين الأرقام الأولى والثانية ، وضع العشرية من قبل والرقم الكبير بعد. قارن الرقم الثاني والرقم الثالث ، وضع العشري قبل وبعد العدد الكبير ، استمر في ذلك حتى تتم مقارنة الرقمين الأخيرين ، ضع العشري قبل وبعد الرقم الكبير.
Step2: في الرحلة الثانية: لا تزال تبدأ من اللوغاريتم الأول (لأنه قد يكون بسبب تبادل الرقم الثاني والرقم الثالث ، لم يعد الرقم الأول أصغر من الرقم الثاني) ، وضع العشرية قبل وضع العدد الكبير ، قارن حتى الرقم قبل الحفاري (الموضع الأول هو بالفعل في الموضع الخليجي). في نهاية الرحلة الثانية ، يتم الحصول على عدد أقصى جديد في الموضع قبل الأخير (في الواقع ثاني أكبر رقم في التسلسل بأكمله).
إذا استمر هذا ، كرر العملية أعلاه حتى يتم الانتهاء من الفرز أخيرًا.
نظرًا لأن العشرية يتم وضعها دائمًا للأمام ويتم وضع أعداد كبيرة للخلف أثناء عملية الفرز ، والتي تعادل صعود الفقاعات ، فإنه يسمى فرز الفقاعات.
تأثير فرز الفقاعة الرسوم المتحركة
التنفيذ: هذا الرمز بسيط نسبيًا وهو الرمز الأساسي والأساسي في الخوارزمية. . .
ثلاثة أشياء يجب ملاحظتها
1. يمكن حل طريقة تبادل فئات في javaScript مع a = [b ، b = a] [0].
يستبدل
نسخة الكود كما يلي:
var ، a ، b ، temp
درجة الحرارة = أ ؛
أ = ب ؛
ب = درجة الحرارة
طريقة التبادل هذه
2. انتبه إلى ذاكرة التخزين المؤقت لمتغيرات الحلقة ، حيث يتم تخزين Array.Length
3. انتبه إلى الحلقة المدمجة ، والتي يمكن المقارنة من الرقم الأول والرقم الأخير ، و N هو رقم خطوة المقارنة
وظيفة publesort (صفيف) {var l = array.length ؛ for (var i = 0 ؛ i <l ؛ i ++) {// عدد الخطوات المقارنة هو طول الصفيف لـ (var j = 0 ؛ j <li ؛ {Array [j] = [Array [J - 1] ، Array [J - 1] = Array [J]] [0] // عناصر التبادل هنا}} لـ (var k = 0 ؛ k <l ؛ k ++) {console.log (array [k]+"،") [6،54،6،22،5،7،8،2،34] ؛ bubblesort (a) ؛تأثير الرسوم المتحركة
نوع الإدراج
إنه أمر بسيط للغاية ، إنها خطواتنا لمس وإدراج البطاقات!
الأفكار:
1 أولاً ، دعنا نقول أننا لمست بطاقة ، ويتم ضبط جميع البطاقات في أيدينا على فارغة = [] لم.
2 أخرج البطاقة التالية ، وقم بتعيينها على A ، قم بفحص من الخلف إلى الأمام في جميع بطاقاتنا فارغة (مرتبة بالفعل)
3 إذا كانت البطاقة الموجودة في يدك فارغة [فارغة. length-n] (مصنفة) أكبر من العنصر الجديد ، حرك البطاقة إلى الموضع التالي (مساحة التحرير) فارغة [فارغة.
4 خطوة 3 حتى البطاقة المرتبة فارغة [فارغة. الطول n] أقل من أو تساوي أ
5 أدخل A في هذا الموضع فارغ [فارغ. الطول n] = أ
6 كرر الخطوة 2
ومع ذلك ، لا يزال رمز JavaScript صعبًا بعض الشيء ، فالرمز هو كما يلي:
دالة إدراج (arr) {var l = arr.length ؛ var فارغ = [] ؛ // صفيف فارغ ، يشير إلى يدنا فارغة. push (arr [0]) ؛ // دعنا نلمس صورة أولاً (var i = 1 ؛ i <l ؛ i ++) {// لاحظ أن نقطة البداية هنا هي 1 ، لأننا قد لمسنا صورة! إذا كان (arr [i]> فارغ [فارغ. الطول - 1]) {فارغ [فارغ. عندما arr <جزء معين من صفيف مرتبة ، ليست هناك حاجة لتحريكه. فارغة [J] = فارغة [J - 1] ؛ // تحرك فارغة [j - 1] = arr [i] ؛ // ضع القيمة على الموضع الفارغ} // console.log (فارغ)} إرجاع فارغة}ثم نقطة المعرفة الأكثر أهمية هنا هي رمز && ، وهو ما يعني "و" ، أي ، يجب استيفاء الشروط على كلا الجانبين قبل إنشاء التعبير.
يمكن أن يحل الرمز && أيضًا استبدال إذا ، على سبيل المثال ، إذا (a) {fun ()} يساوي A && b
نقطة أخرى مهمة للغاية
على افتراض أن الصفيف هو ARR ، فإن "العنصر الأخير" الخاص به هو arr [arr.length-1].
فرز الرسوم المتحركة
نوع الاختيار
كما أنها خوارزمية فرز بسيطة.
الأفكار:
ابحث عن أصغر عنصر - رميه في الصفيف - ابحث عن العنصر الصغير مرة أخرى - رميه في الصفيف ، وهلم جرا.
أولاً ، ابحث عن أصغر عنصر في الصفيف غير المصقول. يمكن أن تستخدم الطريقة التي تجدها وسائل الحكم المستمر والتعيين ، أي:: اسمح لمجموعة العناصر الأولى [0] من الصفيف تكون أصغر عنصر ، ثم رقم تسلسل "العنصر الدنيا" في الصفيف هو 0.
ثم تكرار على الصفيف. إذا كان العنصر الثاني من الصفيف أصغر من ذلك ، فإن العنصر الثاني هو أصغر عنصر وتحديث "0" إلى "1".
بعد العبور ، نعلم أن مجموعة أصغر عنصر في هذه السلسلة هي "N" ؛ يتم إخراجها وتخزينها في موضع البداية لتسلسل الفرز (Array [n])
بعد ذلك ، استمر في البحث عن أصغر عنصر من العناصر المتبقية غير المتبقية ، ثم ضعه في نهاية التسلسل المرتبة. لاحظ أن تراكب التجارب يبدأ من 1 في هذا الوقت. لأننا اخترنا بالفعل أصغر عنصر.
وهكذا حتى يتم فرز جميع العناصر.
دالة selectSort (Array) {var min ؛ var l = array.length ؛ // الطول المخطط لـ (var i = 0 ؛ i <l ؛ i ++) {// start loop ، حلقة 1 مرات في المجموع ، ويمكنك العثور على عناصر l min = i ؛ (Array [min]> Array [j]) // upply ما إذا كان min min = j ؛ // تحديث "الحد الأدنى" المشترك} if (min! = i) {// لأنه هنا ، لأنه يعمل في نفس الصفيف ، يمكنك تبادل العناصر مباشرة. على سبيل المثال ، العنصر الأول من المصفوفة هو I ، ثم وجدت أن أصغر عنصر هو الصفيف [دقيقة] ، لذلك أحتاج إلى تبادل هذا الدقيقة مع أنا. وهلم جرا. صفيف [i] = [صفيف [دقيقة] ، صفيف [دقيقة] = صفيف [i]] [0] ؛ // عناصر المبادلة}} صفيف الإرجاع ؛}ما لا يزال يلاحظ هنا هو طريقة كتابة صفيف التبادل [i] = [صفيف [دقيقة] ، صفيف [دقيقة] = صفيف [i]] [0]
من السهل تبادل الصفيف [i] و Array [min] ~
فرز الرسوم المتحركة
نوع سريع
النوع السريع هو أقوى خوارزمية فرز في الوقت الحاضر ، والتي تستفيد من فكرة العودية.
الأفكار
يسمى اختيار عنصر من الصفيف "القياس". يمكن تحديد هذا مباشرة باستخدام الطول/2
تكرار من خلال الصفيف ، يتم وضع جميع العناصر ذات القيمة المرجعية أمام المرجع ، ويتم وضع جميع العناصر ذات القيمة المرجعية أكبر من المرجع (يمكن استخدام نفس الرقم في أي من الجانبين). من حيث الرجل العادي ، يقف الرجل على اليسار وتقف المرأة على اليمين. .
بعد ذلك ، نحصل على صفيف صفيف = صفيف يتكون من أجزاء أصغر من المعيار + صفيف Rarray يتكون من أجزاء أكبر من المعيار.
ثم نحتاج فقط إلى "نفس" عملية لاراي وراراي ~
هذا يتطلب استخدام كتابة العودية. بعد المعالجة ، ينقسم لاراي إلى معيار لاراي ، وهو أصغر من مؤشر لاراي وأكبر من معايير لاراي. .
ثم نستمر في فعل الأشياء ، يقف الرجل على اليسار وتقف المرأة على اليمين. .
إلى أن نجد أن طول Larray أصبح 1 ، وهو ما لا يكفي لتقسيمه مرة أخرى ، نعتقد أن الفرز قد انتهى.
دالة QuickSort (arr) {var l = arr.length ؛ // طول الصفيف المخبأ إذا (arr.length <= 1) {return arr} ؛ // إذا كان طول Larray و Rarray أصغر من 1 ، فلا داعي لتصطف ~ var num = math.floor (arr.length/2) ؛ // اختر الرقم في منتصف الصفيف. لاحظ أن الطول/2 ليس بالضرورة عددًا صحيحًا. استخدم Math.floor لجولة var numValue = arr.splice (num ، 1) [0] ؛ // استخدم طريقة لصق لأخذ عنصر ما ، انتبه إلى requix var left = [] ؛ // إنشاء حاوية المرجع اليسرى var right = [] left.push (arr [i]): right.push (arr [i]) ؛ // يقف الرجل على اليسار والمرأة تقف على اليمين. . } إرجاع Quicksort (يسار) .concat ([NumValue] ، Quicksort (يمين)) // متكررة ، تستمر في العمل في المصفوفات اليسرى والأيمن. }تأثير الرسوم المتحركة:
لاحظ هنا أنه على الرغم من أن arr.splice (num ، 1) ترسم رقمًا واحدًا فقط ، فإن نتيجة لصق هي أيضًا صفيف ، يتطلب [0] ، وإلا فإن النتيجة ستكون غريبة مجموعة من المصفوفات من المصفوفات (1). . .
مرجع لصق: //www.vevb.com/w3school/js/jsref_splice.htm
Math.floor هو مرجع لكائنات الرياضيات //www.vevb.com/w3school/js/js_obj_math.htm
ما هو عودة: http://baike.baidu.com/view/96473.htm
بالإضافة إلى الفرز السريع ، فإن الخوارزميات الأربعة المذكورة أعلاه كلها خوارزميات فرز بسيطة ، ويتم أخذ هذه الخوارزميات الأربعة بشكل متكرر للغاية أثناء المقابلات ~
لا يزال من المهم التأكيد هنا على أن الخوارزمية أعلاه تستخدم الكثير من المعرفة ذات الصلة حول الحلقات والصفائف ، لذلك يجب عليك حفظها!