排序算法——冒泡排序

思路

① 遍历数组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;
}

 

posted @ 2015-10-11 14:38  桃子夭夭  阅读(189)  评论(0编辑  收藏  举报