冒泡排序
- 原理:让数组当前项后后一项比较,如果当前项大于后一项,就让两者换位置(从小到大),每一轮前后两两比较,每次比较会把大者放到:末尾
- 具体比较轮数:
ary.length-1
,每一轮比较次数ary.length-1
/**
bubble:冒泡排序
@parameter
ary:[array] 需要排序的数组
@return
[array]:排序后的数r组
*/
var ary=[12,13,23,14,16,11]
function bubble(ary){
//=>外层控制的是要比较的轮数
for(var i=0; i<ary.length-1; i++){
//=>内层循环控制的是每轮比较的次数
for(var j=0;j=ary.length-1-i;j++){
//ary[j]前一项数值
//ary[j+1]后一项数值
if(ary[j]>ary[j+1]){
//前一项与后一项交换位置
var temp=ary[j]
ary[j]=ary[j+1]
ary[j+1]=temp
}
}
}
return ary
}
babble(ary)//
插入排序
- 将每一项理解为扑克牌,拿桌子上的一张牌与手里的牌比较,将值大的放在值小的后边
//对象数组排序
function(ary){
var handleAry=[];//手
handleAry.push(ary[0]);//先放在手里一张牌
for(var i=1;i<ary.length;i++){
var item=ary[i];//拿桌子上的一张牌,从头开始拿
for(var j=handAry.length-1;j>=0;j--){//循环手里的牌,从后往前循环
if(itme>handAry[j]){//拿桌子上的牌与手里的牌比较。
handAry.splice(j+1,0,item);//如果桌子上的牌比手里的大,那就放在手里的牌的后边
break;
}
if(j===0){
//新抓到牌是最小的,我们把新抓的牌放在最开始的位置
handleAry.unshift(item)
}
}
}
return handAry;
}
insert(ary)
sort()排序
- 数组方法,可数组升序、降序,多维数组排序等,亦可对象数组排序
var arr = [
{ name:"小明", age:12 },
{ name:"小红", age:11 },
{ name:"小刚", age:15 },
{ name:"小华", age:13 }
];
function compare(p){ //这是比较函数
return function(m,n){
var a = m[p];
var b = n[p];
return a - b; //升序
}
}
arr.sort(compare("age"));
console.log(arr);
//结果如下:
//[{name: "小红", age: 11},
//{name: "小明", age: 12},
//{name: "小华", age: 13},
//{name: "小刚", age: 15}]
//数组降序
var arr = [2,3,13,17,4,19,1];
arr.sort(function(a,b){ // 这是比较函数
return b - a; // 降序
})
console.log(arr) // 结果:[19, 17, 13, 4, 3, 2, 1]
网友评论