当前位置: 首页 > news >正文

简单选择排序

简单选择排序,很明显属于选择排序。

选择排序:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。

n个元素的简单选择排序需要n-1趟处理。

代码:

void SelectSort(int A[],int n){
    int min_idx;//记录最小元素的位置
    int temp;
    //n个元素需要n-1趟处理,单独最后一个元素组成的子序列无需再处理
    //i指向当前待排序子序列的第一个元素
    for(int i = 0;i< n-1;i++){
        min_idx = i;
        for(int j = i+1;j < n;j++){  //在A[i...n-1]中选择最小的元素
            if(A[j] < A[min_idx]) min_idx = j;
        }
        if(min_idx != i){
            temp = A[min_idx];
            A[min_idx] = A[i];
            A[i] = temp;
        }
    }
}

无论正序、逆序、还是乱序,一定需要n-1趟处理。

总共需要对比关键字(n-1)+(n-2)+...+1=n(n-1)/2次。

元素交换次数 < n - 1。

简单选择排序性质
时间复杂度无论什么情况都是O(n^2)
空间复杂度O(1)
稳定性不稳定
适用性顺序表、链表都可以

相关文章:

  • 手绘的思维导图怎么转成电子版思维导图?分享今年刚测试出来的方法
  • 设备预测性维护:工业设备的 “天气预报”,你家机器需要吗?
  • 【10万QPS压力测试】Redis三主三从高可用集群基准测试
  • Linux CentOS7 安装emqx详细教程
  • 信源的分类及数学模型
  • Unix Domain Socket、IPC、RPC与gRPC的深度解析与实战
  • 【多线程】线程安全问题
  • 【服务器环境安装指南-指定 cuda 版本】在 Ubuntu 22.04 上完成 cuda-toolkit 12.0 和 cudnn 12.x 的安装教程
  • 智慧路灯的发展史
  • springboot中logback日志配置
  • 20402/20404系列电子校准件
  • 基于SpringBoot+Vue的在线考试系统+LW示例
  • 回溯算法:组合I
  • 蓝桥杯 跑步计划
  • 深入剖析C# List<T>的底层实现与性能奥秘
  • QtConcurrent::run并发
  • 如何选择免费中文 Postman 替代工具?
  • 高度电路中时序设计之二
  • CentOS 7部署主域名服务器 DNS
  • 动态规划之完全背包
  • 如何使用上线了app建设网站/武汉搜索引擎营销
  • 网站打开为建设中/西安百度公司开户
  • 廊坊网站建设团队/seo快速优化软件网站
  • wordpress首页摘要设置/seo怎样
  • 免费在线网站建设/关键词排名怎么快速上去
  • 网站制作b s的基本步骤/自媒体运营主要做什么