خذ var a = [4،2،6،3،1،9،5،7،8،0] ؛ كمثال.
1. فرز التل. فرز التل هو ترقية على إدراج الفرز. إنها بعض الطرق للمقارنة مع أولئك الذين لديهم مسافة أولاً.
دالة shellsort (arr) {var i ، k ، j ، len = arr.length ، gap = math.ceil (len/2) ، temp ؛ بينما (gap> 0) {for (var k = 0 ؛ k <gap ؛ k ++) {var tagarr = [] ؛ tagarr.push (arr [k]) لـ (i = k+gap ؛ i <len ؛ i = i+gap) {temp = arr [i] ؛ tagarr.push (temp) ؛ لـ (j = i gap ؛ j> -1 ؛ j = j gap) {if (arr [j]> temp) {arr [j+gap] = arr [j] ؛ } آخر {break ؛ }} arr [j+gap] = temp ؛ } console.log (tagarr ، "GAP:"+GAP) ؛ // إخراج المصفوفة التي تم فرزها حاليًا. console.log (arr) ؛ // إخراج الصفيف بعد هذه الجولة من الفرز. } GAP = parseint (GAP/2) ؛ } إرجاع arr ؛ }إخراج العملية:
[4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [6 ، 7] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 0 ، 9 ، 5 ، 7 ، 8 ، 0] [6 ، 7] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 3 ، 5 ، 9 ، 6 ، 7 ، 8 ، 1] [2 ، 3 ، 9 ، 7 ،
يمكن أن نرى من الإخراج. الفاصل الزمني بين الجولة الأولى هو 5. فرز صفائف هذه الفواصل الزمنية بدوره.
الفاصل هو 5:
[4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [6 ، 7] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 0 ، 9 ، 5 ، 7 ، 8 ، 0] [6 ، 7] "الفجوة: 5" [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] [4 ، 2 ، 6 ، 3 ، 1 ، 9 ، 5 ، 7 ، 8 ، 0] [1 ، 0] "الفجوة: 5" [4 ، 2 ، 3 ، 5 ، 9 ، 6 ، 7 ، 8 ، 1] [2 ، 3 ، 9 ، 7 ،
الفاصل 2:
[4 ، 2 ، 6 ، 3 ، 0 ، 9 ، 5 ، 7 ، 8 ، 1] 4 6 0 5 8 2 3 9 7 1
بعد الفرز:
[0 ، 1 ، 4 ، 2 ، 5 ، 3 ، 6 ، 7 ، 8 ، 9]
الفاصل هو 1:
بعد الفرز:
[0 ، 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9].
2. نوع سريع. اصنع صفيفًا مميزًا بقيمة في الصفيف. ضع القيمة أصغر من هذا على يسار الصفيف ، ووضع القيمة أكبر من هذا على يمين الصفيف. ثم يؤدي بشكل متكرر نفس العملية في المصفوفات اليسرى والأيمن. حتى يكتمل الفرز. عادة ما يتم وضع علامة على القيمة الأولى للمصفوفة.
شفرة:
الدالة QuickSort (arr) {var len = arr.length ، laydarr = [] ، relityarr = [] ، tag ؛ if (len <2) {return arr ؛ } tag = arr [0] ؛ لـ (i = 1 ؛ i <len ؛ i ++) {if (arr [i] <= tag) {LeftArr.push (arr [i])} else {rightarr.push (arr [i]) ؛ }} return QuickSort (Leftarr) .Concat (TAG ، QuickSort (rightarr)) ؛ }3. الترتيب والفرز. دمج سلسلة من المتسلسلات المرتبة في تسلسل كبير ومرس. دمج بدءا مع أصغر وحدة. ثم دمج تدريجيا المصفوفات المدمجة. أخيرًا ، يتم تحقيق دمج الفرز.
طرق لدمج صفيفتين مرتبة:
الوظيفة subsort (arr1 ، arr2) {var len1 = arr1.length ، len2 = arr2.length ، i = 0 ، j = 0 ، arr3 = [] ، barr1 = arr1.slice () ، barr2 = arr2.slice () ؛ بينما (barr1.length! = 0 || barr2.length! = 0) {if (barr1.length == 0) {arr3 = arr3.concat (barr2) ؛ Barr2.length = 0 ؛ } آخر إذا (barr2.length == 0) {arr3 = arr3.concat (barr2) ؛ Barr2.length = 0 ؛ } آخر إذا (barr2.length == 0) {arr3 = arr3.concat (barr1) ؛ barr1.length = 0 ؛ } آخر {if (barr1 [0] <= barr2 [0]) {arr3.push (barr1 [0]) ؛ Barr1.Shift () ؛ } آخر {arr3.push (barr2 [0]) ؛ Barr2.shift () ؛ }} return arr3 ؛ }دمج النوع:
دالة mergesort (arr) {var len = arr.length ، arrleft = [] ، arrright = [] ، gap = 1 ، maxgap = len-1 ، gaparr = [] ، glen ، n ؛ بينما (الفجوة <maxgap) {gap = math.pow (2 ، n) ؛ if (gap <= maxgap) {gaparr.push (gap) ؛ } n ++ ؛ } glen = gaparr.length ؛ لـ (var i = 0 ؛ i <glen ؛ i ++) {gap = gaparr [i] ؛ لـ (var j = 0 ؛ j <len ؛ j = j+gap*2) {arrleft = arr.slice (j ، j+gap) ؛ arrright = arr.slice (j+gap ، j+gap*2) ؛ console.log ("left:"+arrleft ، "يمين:"+arrright) ؛ arr = arr.slice (0 ، j) .concat (surfort (arrleft ، arrright) ، arr.slice (j+gap*2)) ؛ }} return arr ؛ }SITE [4،2،6،3،1،9،5،7،0] الإخراج:
اليسار: 4 يمين: 2 اليسار: 6 يمين: 3 اليسار: 1 يمين: 9 اليسار: 5 اليمين: 7 اليسار: 8 اليمين: 0 اليسار: 2،4 يمين: 3،6 اليسار: 1،9 اليمين: 5،7 اليسار: 0،8 اليمين: اليسار: 2،3،4،6 اليمين: 1،5،7،9 اليسار: 0،8 اليمين: 1،2،3،5،5،5،6 ،
يمكن أن نرى أنه بدءا من أصغر وحدة.
تدمج الجولة الأولى الأولى العناصر المجاورة بالتسلسل: 4،2 ؛ 6،3 ؛ 1،9 ؛ 5،7 ؛ 8،0
بعد اكتمال الدمج ، يصبح: [2،4،3،6،1،9،5،7،0،8]
تندمج الجولة الثانية في وحدة واحدة من عنصرين: [ 2،4] ، [3،6] ؛ [1،9] ، [5،7] ؛ [0،8] ، [] ؛
بعد اكتمال الدمج ، يصبح: [2،3،4،6،1،5،7،9،0،8]
تندمج الجولة الثالثة في وحدة واحدة من 4 عناصر: [ 2،3،4،6] ، [1،5،7،9] ؛ [0،8] ، []
بعد اكتمال الدمج ، يصبح: [1،2،3،4،5،6،7،9،0،8] ؛
تندمج الجولة الرابعة في وحدة واحدة من 8 عناصر: [1،2،3،4،5،6،7،9] ، [0،8] ؛
تم الاندماج. [0،1،2،3،4،5،6،7،8،9] ؛
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.