تتغير التقنيات الجديدة باستمرار ، وإتقان بعض المؤسسات هو أساس متين للتعلم وتحديث التقنيات باستمرار في المستقبل. ليس لدي ما أفعله مؤخرًا. من أجل مراجعة بنية البيانات التي تعلمتها من قبل ، قمت بتطبيق خوارزمية الفرز في بنية البيانات في JS ، والتوضيح المضمن في نهاية هذه المقالة.
فرز بسيط
نوع الفقاعة
فرز الفقاعات هو أبسط خوارزمية فرز ، مع مربع من التعقيد الزمني n ، والرمز كما يلي:
الدالة bubblesort (صفيف) {for (var i = 0 ؛ i <array.length ؛ i ++) {for (var j = array.length ؛ j> 0 ؛ j--) {if (array [j] <array [j - 1]) {var temp = array [j - 1] ؛ صفيف [j - 1] = صفيف [j] ؛ صفيف [j] = temp ؛ }} /* نتيجة الإخراج* /document.write ("هذا هو + (i + 1) +" الحلقة الثانية ・ ، والنتيجة هي: ") ؛ لـ (var k = 0 ؛ k <array.length ؛ k ++) {document.write (Array [k] +" ، ") ؛} document.write (" <br /> ")إدراج مباشر
يعد فرز الإدراج المباشر أيضًا خوارزمية فرز بسيطة ، كما أن التعقيد الزمني مرفوع بواسطة N ، ولكن الأداء أفضل قليلاً من فرز الفقاعات. الرمز كما يلي:
دالة insertSort (Array) {var temp ؛ لـ (var i = 1 ؛ i <array.length ؛ i ++) {var temp = array [i] ؛ لـ (var j = i ؛ j> 0 && temp <array [j - 1] ؛ j--) {array [j] = array [j - 1] ؛ } صفيف [j] = temp /* نتيجة الإخراج* /document.write ("th؟ + i +" نتيجة ترتيب التمريرات هي: ") لـ (var n = 0 ؛ n <array.length ؛ n ++) {document.write (Array [n] +" ، ") ؛} document.write (حدد الفرز
يعد فرز الاختيار أيضًا خوارزمية فرز بسيطة ، مع تعقيد زمني لـ N التربيعي ، والأداء أفضل قليلاً من فرز الفقاعات. الرمز كما يلي:
وظيفة selectSort (Array) {var min ، temp ؛ ؛ لـ (var i = 0 ؛ i <array.length ؛ i ++) {min = i ؛ لـ (var j = i+1 ؛ j <array.length ؛ j ++) {if (array [min]> array [j]) min = j ؛ } if (min! = i) {temp = array [i] ؛ صفيف [i] = صفيف [دقيقة] ؛ صفيف [دقيقة] = درجة الحرارة ؛ } /* نتيجة الإخراج* /document.write ("+ i+" نتيجة ترتيب التمريرات هي: ") لـ (var n = 0 ؛ n <array.length ؛ n ++) {document.write (Array [n]+" ، ") ؛} document.write (" <br /> ")فرز معقد
نوع التل
فرز التل هو ترقية لفرز الإدراج. في عام 1959 ، اخترق هيل التعقيد الزمني لـ N Square عن طريق تغيير المقارنة الزوجية في الفرز البسيط إلى إعداد مقارنة القفزة ذات الخطوة. ينتقل فرز التل من أفضل Nlogn إلى أسوأ مربع N وفقا لتعقيد الوقت المختلفة لأحجام الخطوة. الرمز كما يلي:
الدالة erghort (array) {var vegenrement = array.length ؛ var i var temp ؛ // store var count = 0 ؛ do {styrement = math.floor (زيادة / 3) + 1 ؛ من أجل (i = styrement ؛ i <array.length ؛ i ++) {if (array [i] <array [i - zerement]) {temp = array [i] ؛ لـ (var j = i - zirrement ؛ j> 0 && temp <array [j] ؛ j - = styrement) {array [j + zerement] = array [j] ؛ } صفيف [j + زيادة] = temp ؛ /* نتيجة الإخراج*/ count ++ ؛ document.write ("<br />+ count+" نتيجة ترتيب التمريرات هي: ") لـ (var n = 0 ؛ n <array.length ؛ n ++) {document.write (Array [n]+" ، ") ؛} /* تنتهي نتيجة الإخراج* /}}} بينما (زيادة> 1)}فرز كومة
فرز الكومة هو ترقية لتحديد الفرز. من خلال بناء كومة أعلى كبيرة أو كومة قمة صغيرة ، واختيار أكبر أو أصغر قيمة ووضعها في الطرف الأمامي من قائمة الانتظار للفرز. التعقيد الزمني لفرز الكومة في أي حال هو nlogn ، الرمز هو كما يلي:
دالة Heapsort (Array) {var temp ؛ var i ؛ لـ (i = math.floor (array.length / 2) ؛ // بناء صفيف صفيف في كومة أعلى كبيرة} لـ (i = array.length-1 ؛ i> = 0 ؛ i--) {/*تبديل عقدة الجذر Out*/temp = array [i] ؛ صفيف [i] = صفيف [0] ؛ صفيف [0] = درجة الحرارة ؛ /*لا يزال يتم دمج الصفيف المتبقي في كومة قمة كبيرة*/ أكواد (صفيف ، 0 ، i - 1) ؛ /. المصفوفة // أقصى هو المفرد النهائي لدالة الصفيف (صفيف ، ابدأ ، كحد أقصى) {var temp ، j ؛ (Temp> = Array [J]دمج الفرز
دمج الفرز هو الفرز المستقر الوحيد في الفرز المعقد. ينفصل عن طريق الانقسام ثم يدمج الصفيف المراد فرزه. مربع تعقيد وقت فرز الدمج هو n. الرمز كما يلي:
// Source Source Array // Dest Target Array // S START CONSCRIPT // T TARGER SUBSCRIPT SURPLIST MSORT (Source ، Dest ، S ، T) {var m ؛ // اختر القيمة الوسيطة var dest2 = new array () ؛ if (s == t) {dest [s] = source [s] ؛ } آخر {m = math.floor ((s + t) / 2) ؛ MSORT (Source ، dest2 ، m+1 ، t) ؛ دمج (dest2 ، dest ، s ، m ، t) ؛ /. Second Array Corper // Total Length Function (Source ، M ، M ، N) {for (var j = m+1 ، k ؛ if (s <= m) {for (var l = 0 ؛ l <= m - s ؛ l ++) {dest [k+l] = source [s+l] ؛نوع سريع
النوع السريع هو أسرع نوع معروف ، مع تعقيد زمني لـ Nlogn ، والرمز كما يلي:
var count = 0 ؛ وظيفة QuickSort (صفيف ، منخفضة ، عالية) {var temp ؛ if (low <high) {var keypoint = QuickSorthelp (Array ، Low ، High) ؛ count ++ ؛ document.write ("<br /> terminal؟ + count +" نتيجة ترتيب الطلب هي؟: ") لـ (var l = 0 ؛ l <array.length ؛ l ++) {document.write (Array [l] +" ، ") منخفضة) {بينما منخفضة) {بينما منخفضة <صفيف [منخفضة] <= عالية]) {High-- Array [High] = Temp ؛الملخص أعلاه لطرق الفرز المختلفة (تنفيذ JS) في بنية البيانات هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.