美文网首页
选择排序(selection sort)

选择排序(selection sort)

作者: 水中的蓝天 | 来源:发表于2022-08-16 10:31 被阅读0次
    10大排序算法.png

    选择排序的交换次数要远远少于冒泡排序,平均性能优于冒泡排序
    最好最坏平均时间复杂度:O(n^2) 空间复杂度:O(1) 属于稳定排序

    选择排序的执行流程:

    1. 从序列中找出最大的那个元素,然后与末尾的元素交换位置; 执行完一轮后,最末尾的那个元素就是最大的元素
      2.忽略1中曾经找到的最大元素,重复执行步骤1
    
    int[] list = {1,3,2,5,4,30,10,44,67,33};
    int length = list.length - 1;
    
    //end只需要大于0即可,因为剩下最后一个不需要再比
    for(int end = length; end > 0;end--) {
        int max = 0;
        for(int begin = 1;begin <= end;begin++) {
            if(list[max] <= list[begin] ) {
             max = begin;
           }
        }
    
           //交换 max 和 end 位置的元素
           int tmp = list[max];
           list[end] = list[max];
           list[max-1] = tmp;
    }
    
    

    思考:选择排序是否有优化空间 ?
    可以使用堆来选择最大值

    相关文章

      网友评论

          本文标题:选择排序(selection sort)

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