一、冒泡排序(Bubble Sort),是计算机科学领域比较简单的排序算法
原理:是相邻的两个数字进行比较,按照从小到大或从大到小的顺序进行交换,这样一趟过去后,最大或最小的只会被交换到数组的末尾,然后再进行下一轮对比,把最大或最小的值会被交换到数组的倒数第二位“以此类推数组,条件不满足结束循环对比结束。
代码案例展示:
var arr = [1, 20, 3, 100,0,50];
//对比多少圈
for (var i = 0; i < arr.length; i++) {//比较几次
//拿到arr数组中的数据
for (var j = 0; j < arr.length - 1-i; j++) {
//数组数据相邻的两个数进行比较”“判断哪个数比较大”
if (arr[j] > arr[j + 1]) {
//console.log(arr[j] + "-----------" + arr[j + 1]);
//换值 谁大换后面去
var temp = arr[j + 1]; //接受比较后的最小数3
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
二、双重for循环排序(通俗)
原理:将第一位依次与后面的元素进行比较,得到最小火最大值,与第一位交换,再次拿第二位依次与后面的元素进行对比获取第二个最小火最大数,与第二位进行位置交换,重复执行,直到外层循环添加不满足交换完毕,排序完成。
代码案例展示:
var arr = [1,20,3,100,0,50];
//拿到对比的数据
for(var i = 0;iarr[j]){
//不是和对比的元素进行位置交换
min = arr[j];
minIndex = j;
}
}
//真正的交换
arr[minIndex] = arr[i];
arr[i] = min;
}
console.log(arr);
三、sort()方法(便捷)
原理:根据冒泡排序规则进行排序,两两对比,把最小或最大值交换到数组的末尾,根据返回值判断是否交换“若值大于0(y > x,则x和y进行位置交换),若值小于0(y < x,则x和y不进行位置交换).
代码案例展示:
var arr = [1,20,3,100,0,50];
//升序(从小到大)
arr.sort((x,y)=>{
return x - y;
});
//降序(从大到小)
arr.sort((x,y)=>{
return y - x;
})
//原理:两两对比,返回正值交换,返回负值/相同不交换。
arr.sort((x,y)=>{
if(x>y){
return 1;//需要交换位置
}else if(x
对您有用的话,动动小手来个赞赞!