冒泡排序

时间:2022-07-27
本文章向大家介绍冒泡排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

冒泡排序是最简单的一种排序方法,正因为它很简单,所以受到了面试官的青睐,成了程序员必会的内容。

它的思想是通过两次循环,如果前一个比后一个小的时候那么两者互换位置(假设是从小到大排序)。就这样大的数就会像水中的气泡一样从前面逐渐走到后面,这也正式名字的由来。

这里给出冒泡排序的实现,里面使用了flag进行标记,如果已经排好序的数组那么就不需要多次遍历了:

function bubbleSort(arr){
    var flag = true; // 标记某次循环是否执行完毕
    for(var i = 0; i < arr.length - 1 && flag; i++){
        flag = false; // 如果本次循环没有交换 说明已经已经是排好序的 不需要再遍历了
        for(var j = 0; j < arr.length - 1 - i; j++){
            // 如果前面的比后面的大 那么交换元素
            if(arr[j] > arr[j + 1]){
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                flag = true;// 有交换的时候 说明很可能还没有排好序
            }
        }
    }
    return arr;
}

var arr = [8,3,10,7,5,6,4,2,1,9];
bubbleSort(arr);
console.log(arr);// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]