排序-9-选择排序

437 阅读1分钟

回顾冒泡排序

冒泡排序的思想:把每一个元素和下一个元素进行比较交换,使得较大的元素像气泡一样向右移动:

这样一来每一轮操作都可以把最大的元素移动到右侧,经过多轮操作,无序的数列成了升序数列

冒泡排序存在的问题:

元素交换的次数太多了,频繁的数组元素交换意味着更多的内存读写操作,严重影响代码运行效率

选择排序

选择排序的思路:每一轮选择最小者,直接交换到数组最左边

相比较于冒泡排序的优势在于省去了多余的元素交换

执行过程:

代码实现:

    function sort(arr:Array<number>) {
        for (let index = 0; index < arr.length - 1; index++) {
            let minIndx = index;
            for (let j = index + 1; j < arr.length; j++) {
                if(arr[j] < arr[minIndx]) {
                    minIndx = j
                }            
            };
            let temp = arr[minIndx];
            arr[minIndx] = arr[index];
            arr[index] = temp
                    
        }
        return arr
    }
    function main() {
        const arr = [3, 4, 2, 1, 5, 6, 7, 8, 30, 50, 1, 33, 24, 5, -4, 7, 0];
        console.log(sort(arr))
    }
    
    
    main()

小结

时间复杂度:O(n2)

空间复杂度:O(1)

不稳定排序算法:

相较于冒泡排序(稳定排序算法),选择排序是不稳定排序算法,示例如下:

摘要总结公众号:程序员小灰 文章