JS实现十大排序算法——冒泡排序

具体思路:

  1. 循环体内部每次执行一次比较,比较相邻两数的大小。
  2. 内层循环控制两两比较的次数,内层循环跑一遍,总能把最大或者最小的数冒泡到最右边
  3. 外层循环控制冒泡次数,也就是内部循环跑的趟数,为数据规模n。
function bubblingSort(array) {
    for (let i = 0; i < array.length - 1; i++) {
        for (let j = 0; j < array.length - 1 - i; j++) {
            if (array[j] > array[j + 1]) {
                let z = array[j];
                array[j] = array[j + 1];
                array[j + 1] = z;
            }
        }
    }
    return array;
}

相关术语:

稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;

内排序:所有排序操作都在内存中完成;
外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;

时间复杂度: 以数据规模n为基准,一个算法执行所耗费的时间。
空间复杂度: 以数据规模n为基准,一个算法执行所需内存的大小。

冒泡排序时空复杂度及稳定性:

平均时间复杂度:o(n2);
空间复杂度:o(1);
稳定性:稳定;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章