goldEli / Front-End-Training

Front End Training
2 stars 5 forks source link

冒泡排序 #35

Open goldEli opened 4 years ago

goldEli commented 4 years ago
  1. 什么是冒泡排序
  2. 实现冒泡排序算法
**
 * @param {number[]} nums
 * @return {number[]}
 */
var bubbleSort = function(nums) {
    // code some stuff
};
bubbleSort([2,4,3,1,5])// [1, 2, 3, 4, 5]
bubbleSort([2,4,3,1,1,5])// [1, 2, 3, 4, 5]
FireDragonZL commented 4 years ago
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS实现冒泡排序算法</title>
</head>
<body>
    <script>
        /**
         * 两步实现冒泡排序:
         * 1.循环从第一位元素开始遍历;
         * 2.相邻元素两两比较
         */
        var data = [2,6,3,8,5,9,7];

        console.log("排序前的data数组:" + data);
        bubble(data);
        console.log("排序后的data数组:" + data);

        // 冒泡排序算法
        function bubble(array,boolean){
            var j = array.length - 1;
            for (var m = 0; m < array.length; m++) {
                for (var i = 0; i < j; i++) {
                    if (array[i] > array[i + 1]) {
                        swarp(i, i + 1, array);
                    }
                }
                j--;
            }
        }

        // 元素替换位置
        function swarp(m, n, array){
            var tmp = array[m];
            array[m] = array[n];
            array[n] = tmp;
        }
    </script>
</body>
</html>
FireDragonZL commented 4 years ago
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS实现冒泡排序算法</title>
</head>
<body>
    <script>
        /**
         * 三步实现冒泡排序:
         * 1.循环从第一位元素开始遍历;
         * 2.相邻元素两两比较;
         * 3.设立哨兵
         */
        var data = [2,6,3,8,5,9,7,1,10,3,6,11];

        console.log("排序前的data数组:" + data);
        bubble(data);
        console.log("排序后的data数组:" + data);
        var count = 0;

        // 冒泡排序算法
        function bubble(array,boolean){
            var pos = 0;
            var temp = array.length - 1;
            for (var m = 0; m < array.length-1; m++) {
                var flag = 0;
                for (var i = 0; i < temp; i++) {
                    if (array[i] > array[i + 1]) {
                        swarp(i, i + 1, array);

                        flag = 1;
                        pos = i;
                    }
                    console.log(count);
                }
                temp = pos;
                if(flag == 0){
                    return;
                }
            }
        }

        // 元素替换位置
        function swarp(m, n, array){
            var tmp = array[m];
            array[m] = array[n];
            array[n] = tmp;
        }
    </script>
</body>
</html>
748580573 commented 4 years ago
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>冒泡</title>
</head>
<body>
    <div class="circle1"></div>
    <div class="circle2"></div>
    <div class="circle3"></div>
</body>

<script>
    var tmp = 0;
    var bubbleSort = function(nums) {
    for(var i = 0;i < nums.length;i++){
        for(var n = 0;n < nums.length;n++){
            if(nums[i] < nums[n]){
                tmp = nums[i];
                nums[i] = nums[n];
                nums[n] = tmp;
            }
        }
    }
    console.log("hello");
};
bubbleSort([2,4,3,1,1,5])// [1, 2, 3, 4, 5]
</script>
</html>
lurasso commented 4 years ago
<script>
        /*
        * @param {number[]} nums
        * @return {number[]}
        */
        var bubbleSort = function(nums) {
            for(var i = 0 ; i < nums.length-1 ; i++ ){
                for(var j = 0 ; j < nums.length-i-1 ; j++){
                    if(nums[j] > nums[j+1]){
                        var temp = nums[j];
                        nums[j] = nums[j+1];
                        nums[j+1] =temp;
                    }
                }
            }
            console.log(nums);
        };
        bubbleSort([2,4,3,1,5])// [1, 2, 3, 4, 5]
        bubbleSort([2,4,3,1,1,5])// [1, 2, 3, 4, 5]
    </script>
FireDragonZL commented 4 years ago
<body>
    <!--
        实现思路:二路排序算法
        1):取第一个元素,依次和后面的元素进行比较;
        2):以升序为例,从左侧检测到小于标志位的元素,更换位置;
        3):之后,然后从右侧检测到小于标志位的元素,更换位置;
    -->
    <script>
        const data = [3,6,5,9,2,4,8,1,12,7,15];
        console.log("排序前=", data);
        quickSort(data);
        console.log("排序后=", data);

        // 快速排序
        function quickSort(array){
            if (array.length <= 1) {
                return array;
            }
            quickSort2(array, 0, array.length-1);
        }

        // 递归(以升序为例)
        function quickSort2(array, left, right){
            if(left < right){
                // 将基准值存入临时变量
                const flag = array[left];
                // 将数组的边界值存入变量,i和j中
                var i = left;
                var j = right;
                while(i < j){
                    while(i<j && array[j]>flag){
                        j--;
                    }
                    array[i] = array[j];
                    while(i<j && array[i]<flag){
                        i++;
                    }
                    array[j] = array[i];
                }
                array[i] = flag;
                quickSort2(array, left, i-1);
                quickSort2(array, i+1, right);
            }
        }      
    </script>
</body>