排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

目录

  • 1、直接选择排序的原理
  • 2、图解直接选择排序
  • 3、算法代码实现
  • 4、算法复杂度分析、稳定性分析

直接选择排序

1、直接选择排序的原理

基本思想是:选择 + 交换

下面 以升序为例;
1、从待排序列中,寻找最小的元素,和 待排序列中的第一个元素交换位置,如果本身就是第一个元素最小,不用处理
2、从剩下的待排序序列中,重复进行上面的步骤,找到最小的,和待排序的第一个交换位置;

算法设计:使用两层循环

第一层循环,从前到后遍历每一个元素
第二层循环,在待排序的序列中便利,寻找 + 交换位置

2、图解直接选择排序

int arr[] = {3,24,5,15,26,27,2,4,19,15,48};

3、算法代码实现

① 使用位运算,不需要辅助空间的算法

void SelectSort(int *arr,int len) // 直接选择排序
{for(int i = 0;i < len-1;i++){for(int j = i+1;j < len;j++){if(arr[i] > arr[j]){arr[i] = arr[i] ^ arr[j];   // 位运算,不借助辅助空间 arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j];//               int tmp = arr[i]; // 有辅助空间
//              arr[i] = arr[j];
//              arr[j] = tmp;}}}
}

② 运行结果

4、算法复杂度分析、稳定性分析

空间复杂度:如果交换的时候使用了辅助空间,就是O(1)

时间复杂度:O(N); 因为使用了两层遍历~

稳定性不稳定;前面说过,该算法的基本思想是:选择 + 交换,所以在交换的时候,可能就破坏了序列本身的前后关系;

排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析相关推荐

  1. 排序算法 | 简单选择排序,算法的图解、实现、复杂度和稳定性分析

    今天讲解一下简单选择排序的原理以及实现.复杂度和稳定性分析 这个内容很简单,轻松加愉快,很快就过了~ 目录 简单选择排序 1 基本思想 2 动态图解 3 代码 4 复杂度分析 简单选择排序 1 基本思 ...

  2. 数据结构与算法:选择排序

    数据结构与算法:选择排序 雪柯 大工生物信息 提笔为写给奋进之人 已关注 8 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国忠 特别备注:本书非原创,但部分内容自己 ...

  3. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  4. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  5. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化

    今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...

  6. 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接插入排序算法的图解.实现.复杂度和稳定性分析 目录 1.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...

  7. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  8. 数据结构与算法之选择排序

    数据结构与算法之选择排序 目录 基本介绍 选择排序思想 代码实现 1. 基本介绍 选择排序也属于内部排序法,是从排序的数据中,按指定的规则选出某一元素,再依次交换位置后达到排序的目的 2. 选择排序思 ...

  9. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

最新文章

  1. LeetCode Power of Two
  2. 设计模式:模板方法模式(Template Method)
  3. u8 和 char如何转化_如何编写高效率稳定的单片机代码
  4. 从零开始学Java之 编写简单的工程
  5. 图系列(一)图神经网络
  6. 众说纷“云”之云安全企业用户追踪寻访
  7. 小米pro gtx右下角存在图标显示不全
  8. Typora 下载并安装
  9. linux驱动面试题2018(面试题整理,含答案)
  10. 第一周学习前端html的知识总结与感悟
  11. 基于音频指纹的听歌识曲系统
  12. BUAA 数据结构总结——大作业(文本摘要生成)
  13. Mac上绘制流程图的软件
  14. httpc:request post 请求
  15. 饼图(用ECharts绘制)
  16. 开发框架——横版格斗——动作游戏教程
  17. antd design 引用样式不生效问题
  18. 数据结构实验--基于线性表的图书信息管理系统
  19. 360搜索回归360母品牌 安全搜索才“靠谱”
  20. 工业物联 成就智能制造 IIoT未来布局!OFweek 2019工业物联网技术与应用峰会4月即将来袭

热门文章

  1. 基于区块链的健康链系统设计与实现(2)区块链平台Web服务器
  2. [密码学] 密钥分发
  3. 官网拉取fuchsia代码
  4. 有关Non-cacheable,,Cacheable, non-shareable,inner-shareable,outer-shareable的理解
  5. [reference]-ARM/TEE/security等论文中的缩写和参考文献
  6. 自行开发驱动如何进行驱动签名
  7. 学了网络安全以后能做哪些岗位呢?来来来,带你们了解
  8. version.dll劫持注入模版
  9. PHP下载功能的实现和获得当前目录
  10. 【Prometheus 】 Blackbox_exporter 指标 probe_http_duration_seconds