您的位置:首页 > 其它

排序算法——冒泡排序

2015-10-11 14:38 429 查看

思路

① 遍历数组arr,对所有相邻的数字进行比较,若后边的数字大于前边的,则交换位置
② 经过第一步后,最大的数字已经冒泡在数组末尾了,就不用遍历了。对arr 索引区间在0~arr.length-1的部分重复步骤①
③ 不断重复步骤②直到区间范围为0~1,此时数组中所有数字都已经排序完毕
另外,当某一次遍历没有任何元素交换顺序时,可以认为排序已经完成

JavaScript实现

/**
* 冒泡排序
* @param arr
* @returns
*/
function bubbleSort(arr){
if(!(arr instanceof  Array)) return [];
if(arr.length<=1) return arr;
//over用来判断排序是否已经结束,若某一次遍历完后没有发生交换,说明已经结束
var i, j,over;
for(i=0;i<arr.length;i++){
var over=true;
//最后一个元素就不需要再和后边的元素比较了,后边没有了,所有要-1
for(j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
arr.splice(j,0,arr.splice(j+1,1)[0]);
over=false;
}
}
if(over){
break;
}
}
return arr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: