冒泡排序及插入排序

83 阅读1分钟

1.冒泡排序

数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。

<body>
    <script>
        function arrSort(arr) {
            for (let i = 0; i < arr.length - 1; i++) {
                for (let j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j] > arr[j + 1]) {
                        let temp = arr[j]
                        arr[j] = arr[j + 1]
                        arr[j + 1] = temp
                    }
                }
            }
            return arr3
        }
        let arr = [1, 4, 3, 2, 34, 5, 1]
        console.log(arrSort(arr));
    </script>
</body>

2.插入排序

插入排序的工作原理就是将未排序数据,对已排序数据序列从后向前扫描,找到对应的位置并插入。插入排序通常采用占位的形式,空间复杂度为O(1),因此,在从后向前扫描的过程中,需要反复的把已排序的元素逐步向后挪位,为新插入元素提供插入的位置。

<body>
    <script>
        function insertSort(arr) {
            for (let i = 1; i < arr.length; i++) {
                let temp = arr[i]
                let j = i - 1//默认已排序的元素
                while (j >= 0 && arr[j] > temp) {
                    arr[j + 1] = arr[j]
                    j--
                }
                arr[j + 1] = temp
            }
            return arr
        }
        let arr = [1, 2, 5, 4, 43, 5]
        console.log(insertSort(arr));
    </script>
</body>