//1.冒泡排序:冒泡排序总共需要排序n - 1 趟,每趟比较 n -1 - 趟数 这么多次;每趟排序可能交换多次元素,找到其中一个的元素最终位置,每次比较都是相邻元素之间的大小比较。----最常用
var oArr = [78,23,24,55,66,2,55,9,12,38];
// 1冒泡排序
// 从小到大排列
// 因为不用跟自身比较,所以循环次数-1
for (var i=0; i<oArr.length-1; i++) {
// 因为每次比较,都会得出一个最大/最小数,被放置在了最右边,所以要-i
for (var j=0; j<oArr.length-1-i; j++) {
// 如果前一个数,比后一个数大,那么交换位置
if (oArr[j] > oArr[j+1]) {
var temp = oArr[j];
oArr[j] = oArr[j+1];
oArr[j+1] =temp;
}
}
}
console.log(oArr);
//2.sort 方法;js 数组里的一个方法,sort 可以实现排序,只要传递一个函数即可
var arr = [15,342,448,1150,1831,920,10,50,78,100];
//要求按照数字的从小到大排序
arr.sort();
console.log(arr);
arr.sort(function(obj1,obj2){
if(Number(obj1) < Number(obj2)){//前面数减去后面数
return -1;//desc // -1 代表后面的数大
}else if(Number(obj1) > Number(obj2)){
return 1;//asc
}else{
return 0;//same
}
});
console.log(arr);//打印从小到大排序,改变负1,则就可改变排序顺序
//3.选择排序----最常用
var arr = [8,6,14,5,0,1,54,7,3,12];
//比较 n - 1 趟
for(var i = 0 ; i < arr.length - 1 ; i ++){
//假定第一个元素是 最大值
var max = 0 ;//假定每次循环都要把第一个置为最大值,所以不能放到外面
//找到了某一趟的最大值
for(var j = 1 ; j < arr.length - i;j++){
if(arr[max] < arr[j]){
max = j;
}
}
//放到合适的位置
if(max != arr.length - i - 1 ){
//交换着两个位置的元素
var temp = arr[max];
arr[max] = arr[arr.length - i- 1];
arr[arr.length - i -1] = temp;
}
}
console.log(arr);