美文网首页
选择排序

选择排序

作者: 苏码码 | 来源:发表于2022-01-24 10:02 被阅读0次

    1.循环将数组分为两个子集,排序的和未排序的,每轮从未排序的子集中选出最小的元素,放入排序子集
    2.优化:为减少交换次数,每一轮可以先找到最小的索引,在每轮最后再交换元素
    下面是优化后的排序实现方式

            window.onload = function() {
    
                var arr = [2,4,9,1,7,3,6,8,5]
                // 选择排序
                selectionSort(arr)
            }
    
           // 选择排序
            function selectionSort(arr) {
    
                for (let i = 0; i < arr.length - 1; i++) {
                    // 记录最小元素所在的索引值
                    var index = i
                    for (let j = index + 1; j < arr.length; j++) {
                        if (arr[index] > arr[j]) {
                            index = j
                        }
                    }
                    // 当查找到的最小值索引就是当前索引,则不用交换
                    if (index != i) {
                        swap(arr, index, i)
                    }
                    console.log(arr)
                }
            }
    
            // 交换两个值
            function swap(arr, i, j) {
                var tmp = arr[i]
                arr[i] = arr[j]
                arr[j] = tmp
            }
    
    
    

    相关文章

      网友评论

          本文标题:选择排序

          本文链接:https://www.haomeiwen.com/subject/yevehrtx.html