排序算法是js最基础的算法,只要弄清楚各种排序算法的排序逻辑,要实现起来就不难了。下面就介绍两种最常见的算法——冒泡和排序。
冒泡排序
冒泡排序的思想就是从左到右依次比较数组a相邻的两个数,将较大的数放到后面,一轮比较之后,最大的数会排到最后面;第二轮比较后次大的数会在倒数第二的位置,直到进行a.length次比较后,数组就会升序排列。
<script>
function code(group){
// 冒泡排序
for(i=0;i<arguments.length-1;i++){
for(j=0;j<arguments.length-i-1;j++){
// console.log(i,j);
if(arguments[j]>arguments[j+1]){ //相邻元素两两对比
// console.log(i,j);
//元素交换
[arguments[j],arguments[j+1]] = [arguments[j+1],arguments[j]]
}
}
}
console.log(arguments);
}
code(5,1,2,7,4,8,6,3);
</script>
如果你对代码理解的不是很清楚 这边我给你一个动态图片地址 让你理解更深点
动态图片
选择排序
选择排序的思想是每次从数组中选出一个最小数放到数组最前面,第二次选择剩余数里最大的放到数组第二位,直到所有的数都被选择完
<script>
// 从大到小排序
function code(group){
for(var i=0;i<arguments.length-1;i++){
var max = i;
for(var j=i+1;j<arguments.length;j++){
console.log(i,j)
if(arguments[max]<arguments[j]){//寻找最大的数
max = j //将最大数的索引保存
}
}
var temp = arguments[i];
arguments[i] = arguments[max];
arguments[max] = temp;
}
}
console.log(arguments)
</script>
这边也给你一个动态图片让你作为理解
动态图片
总结
这两种算法都是比较简单的算法,但越简单越不能大意或者小瞧它,其实有很多的地方都用到了这两种算法的思想,希望大家能对这两种算法有不一样的看待。如果你有其他的理解可以再下面评论说明,大家一起交流交流。