冒泡排序

来源:互联网 发布:大数据r语言 编辑:程序博客网 时间:2024/06/07 14:55

冒泡排序:

从头开始,比较相邻的两个元素,按升序排列,如果前面的元素大于后面元素,则互换位置。每次遍历之后,总是将最大的数放在此次遍历的最后一个位置。

例如:数组20,7,3,1,18,31,19
第一次排序结束后31将会被放在最后一位[7,3,1,18,20,19,31],那么下次遍历的结束位置就是在19的位置结束。所以只需比较前面数组的大小互换位置。

另外一种情况:如果数组已经排好序列,按照上述思路还是需要几轮遍历,所有需要引进一个指针来表明数组是否需要下次遍历。如果在遍历过程中数组没有交换位置,则表明已经排序完成,则排序结束。

/** * 冒泡排序 * 时间复杂度:O(n2) * 稳定性:稳定 * @param array */function bubbleSort(array) {    var isNextSort=true;//下次是否需要遍历    for(var i=0;i<array.length-1&&isNextSort;i++){        isNextSort=false;        for(var j=0;j<array.length-i;j++){            if(array[j]<array[j+1]){                isNextSort=true;                var temp=array[j];                array[j]=array[j+1];                array[j+1]=temp;            }        }    }    return array;}

冒泡排序算法比较稳定,时间复杂度为O(n2)

原创粉丝点击