- كۆپۈكلىتىپ تەرتىپكە تۇرغۇزۇش | Bubble sort | 冒泡排序
1 . ئۆز-ئارا قوشنا بولغان ئېلىمېنىتلارنى سېلىشتۇرىدۇ، ئەگەر بىرىنىچىسى ئككىنچىسىدىن چوڭ بولسا ئورنى ئۆز-ئارا ئالمىشىدۇ؛
2 . بۇنداق بولغاندا ھەر بىر ئايلانغادا ئاخىردىكى تىزىلىپ بولغان ئىلمىنىتلارغا بىرسى قېتىلىدۇ ، ئەڭ چوڭ ئېلىمېنت ئەڭ ئاخىرىغا تىزىلىدۇ؛
3 . بۇنداق بولغاندا ئايلاندۇرىدىغان ئىلمىنتلار بارغانسىرى ئازلاپ ماڭىدۇ. مەسىلەن:
let arr=[3,5,1,3,2,7,0,9,8,4]
let length=arr.length;
for (let i=0;i<length-1;i++){ //循环9次
for (let j=0;j<length-1-i;j++){ //每次循环10-i-1次数
if (arr[j] > arr[j+1]){
[arr[j],arr[j+1]]=[arr[j+1],arr[j]]
}
}
console.log(`第${i+1}次循环,${arr};`)
}
结果
第1次循环,3,1,3,2,5,0,7,8,4,9;
第2次循环,1,3,2,3,0,5,7,4,8,9;
第3次循环,1,2,3,0,3,5,4,7,8,9;
第4次循环,1,2,0,3,3,4,5,7,8,9;
第5次循环,1,0,2,3,3,4,5,7,8,9;
第6次循环,0,1,2,3,3,4,5,7,8,9;
第7次循环,0,1,2,3,3,4,5,7,8,9;
第8次循环,0,1,2,3,3,4,5,7,8,9;
第9次循环,0,1,2,3,3,4,5,7,8,9;
- تاللاپ تەرتىپكە تۇرغۇزۇش | selectSort | 选择排序
تۇنجى قېتىم گۇرۇپتىكى ئەڭ كىچىك ئېلىمېنىتنى تاللاپ ئەڭ ئالدىغا تىزىۋالىمىز ، ئاندىن ئېشىپ قالغان ئېلىمېنتنىڭ ئچىدىن يەنە ئەڭ كىچىكىنى تاللاپ بايا تىزىۋالغان ئېلىمېنىتنىڭ ئارقىغا تىزىۋالىمىز ؛ مۇشۇنداق ئايلاندۇرۇش ئارقىلىق كىچىكتىن چوڭغا قاراپ تىزىلغان ئېلىمېنىتلار گۇرپىسىغا ئېرىشىمىز ؛
let arr=[3,5,1,3,2,7,0,9,8,4]
let length=arr.length;
let min=null;
//选择排序
for (let i=0;i<length-1;i++){
min=i;
for (j=i+1;j<length;j++){
if (arr[j]<arr[min]){
min=j
}
}
[arr[min],arr[i]]=[arr[i],arr[min]]
console.log(`第${i+1}次循环,${arr}`)
}
结果:
第1次循环,0,5,1,3,2,7,3,9,8,4
第2次循环,0,1,5,3,2,7,3,9,8,4
第3次循环,0,1,2,3,5,7,3,9,8,4
第4次循环,0,1,2,3,5,7,3,9,8,4
第5次循环,0,1,2,3,3,7,5,9,8,4
第6次循环,0,1,2,3,3,4,5,9,8,7
第7次循环,0,1,2,3,3,4,5,9,8,7
第8次循环,0,1,2,3,3,4,5,7,8,9
第9次循环,0,1,2,3,3,4,5,7,8,9
- قىستۇرۇپ تەرتىپكە تۇرغۇزۇش | insertionSort | 插入排序
بىز سېلىشتۇرماقچى بولغان ئېلىمېنىتنى گۇرۇپتىكى ھەممە ئېلىمېنىتلار بىلەن سېلىشتۇرغاندىن كېيىن مۇۋاپىق كېلىدىغان ئورۇنغا قىستۇرىمىز ،بۇ ئارقىلىق ئېلىمېنىتلارنى تەرتىپكە تۇرغۇزۇش مەقسىتنگە يېتەلەيمىز. مەسىلەن :
let arr=[3,5,1,6,2,7,0,9,8,4]
function insertionSort(arr)
{
var len = arr.length;
var preIndex, current;
for (var i = 1; i < len; i++)
{
preIndex = i - 1;
current = arr[i];
while (preIndex >= 0 && arr[preIndex] > current)
{
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
console.log(`第${i}次运行:${arr}`)
}
return arr;
}
console.log('最终结果:'+insertionSort(arr))
结果
第1次运行:3,5,1,6,2,7,0,9,8,4
第2次运行:1,3,5,6,2,7,0,9,8,4
第3次运行:1,3,5,6,2,7,0,9,8,4
第4次运行:1,2,3,5,6,7,0,9,8,4
第5次运行:1,2,3,5,6,7,0,9,8,4
第6次运行:0,1,2,3,5,6,7,9,8,4
第7次运行:0,1,2,3,5,6,7,9,8,4
第8次运行:0,1,2,3,5,6,7,8,9,4
第9次运行:0,1,2,3,4,5,6,7,8,9
最终结果:0,1,2,3,4,5,6,7,8,9