上次联系的算法是冒泡排序,不知道小伙伴们还记得不,中间穿插了一下比特币相关的分享,嘿嘿。今天来分享一下选择排序。

算法描述:选择排序是从数组中选择最大(小)的元素放到数组的最后一个,然后往前移,接着从剩余未排序的元素中选择最大(小)的元素放到倒数第二个,依次类推,直到第二个元素被放好。

算法代码:

void selection_sort(int arr[], int n){    int i, j, tmp, maxidx;    for (i = n - 2; i >= 0; --i) {        maxidx = i + 1;        for (j = 0; j 1; ++j) {            if (arr[j] > arr[maxidx])                maxidx = j;        }        if (maxidx != i + 1) {            tmp = arr[i + 1];            arr[i + 1] = arr[maxidx];            arr[maxidx] = tmp;        }    }}

测试代码:

#include void selection_sort(int arr[], int n);int main(){    int arr[] = { 8, 36, 23, 2, 17, 6};    int N = sizeof(arr) / sizeof(int), i = 0;    for (i = 0; i < N; ++i) {        printf("%d ", arr[i]);    }    printf("\n");    selection_sort(arr, N);    for (i = 0; i < N; ++i) {        printf("%d ", arr[i]);    }    printf("\n");    return 0;}

运行结果:

排序过程:

上述过程是外层for循环的第一个循环的过程,之后会重复到i=0,然后就排序完成了。选择的意思呢就是,从剩余未排序的元素里面选择出最大(小)的元素,放到队尾(头),一直到没有未排序的元素为止。

选择排序的复杂度:

  • 时间复杂度:

    平均情况:O(n²)

    最好情况:O(n²)

    最坏情况:O(n²)

  • 空间复杂度:

    辅助空间:O(1)

今天就先到这里吧,如果感觉有用的话希望你可以分享给自己的同学、伙伴。谢谢你啦。

-------------------------------------------------------------------------

欢迎关注 [懒人漫说] 公众号 ^_^

c语言排序算法_C语言写排序算法(二) —— 选择排序相关推荐

  1. 数据结构视频教程 -《[猎豹网校]数据结构与算法_C#语言》

    整个视频打包下载地址:史上最全的数据结构视频教程系列分享之<[猎豹网校]数据结构与算法_C#语言>,转载请保留出处和链接! 更多优秀资源请访问:我是码农 在猎豹网校授课的基本都是在IT行业 ...

  2. 密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp实验设计 密码学_实验一_古典密码算法_C语言.doc8页 本 ...

  3. 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序

    第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...

  4. c语言代码先来先服务算法_C语言十大经典排序算法(动态演示+代码,值得收藏)...

    以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. 时间.空间复杂度比较 排序算法 平均时间复杂度 最差时间复杂度 空间复杂度 数据对象 ...

  5. 张仰彪第二排序法_C语言中的最常用的两种排序算法你知道吗?

    冒泡法排序 核心思想:若有N个数从小到大排序,需进行N-1轮比较,第一轮每相邻的两个数据进行比较N-1次,最终挑选出最大的数,放到这一轮的最后位置:第二轮比较N-1-i次,挑选出这一轮最大的数,放入这 ...

  6. c语言pn,C++_C语言实现的PNPoly算法代码例子,写C语言的实验用到的一个算法 - phpStudy...

    C语言实现的PNPoly算法代码例子 写C语言的实验用到的一个算法,判断一个点是否在多边形的内部.C的代码如下: int pnpoly(int nvert, float *vertx, float * ...

  7. java pnpoly算法_C语言实现的PNPoly算法代码例子

    写C语言的实验用到的一个算法,判断一个点是否在多边形的内部.C的代码如下: int pnpoly(int nvert, float *vertx, float *verty, float testx, ...

  8. c语言什么叫为代码写注释算法,急!-伪代码不知哪位高手能够告诉我,什么是伪代码?伪代码编 爱问知识人...

    表示一种算法,可以使用不同的方法,比如使用伪代码,自然语言,流程图,计算机语言等. 什么伪代码呢?伪代码(Pseudocode)是一种算法描述语言.使用伪代码的目的是为了使被描述的算法可以容易地以任何 ...

  9. c语言函数调用排序用插入法,C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)...

    任务代码: 二分查找数组的一个数字:(函数法) #include int binarySearch(int a[],int len,int key) { int low=0,high=len-1,mi ...

最新文章

  1. 在cuDNN中简化Tensor Ops
  2. 通过 Jersey Http请求头,Http响应头,客户端 API 调用 REST 风格的 Web 服务
  3. python 智能识别 商品_阿里云货架商品识别与管理Python SDK使用示例-阿里云开发者社区...
  4. Spring MVC-表单(Form)标签-下拉框(Dropdown)示例(转载实践)
  5. Setup linux 网卡故障,linux网络配置、测试及故障诊断方法和工具二
  6. STM32工作笔记0027---理解电阻的串联和并联
  7. 找出矩阵中绝对值最大的元素及其位置_线性代数之——马尔科夫矩阵
  8. HTTP Basic Authentication验证WCF Data Service
  9. 最小二乘法、梯度下降法和两者区别
  10. jQuery操作Form表单元素
  11. hive分析函数取最新_Hive的分析函数的学习
  12. C#中,两个事件的叠加,结果会如何?
  13. Lisp入门(好文)
  14. ipoo3可以用鸿蒙,vivo新机入网!支持44W快充 配置与iQOO Neo3类似
  15. 免费从网盘下载的卫星影像和高程DEM如何使用?
  16. 【观察】 全新紫光云:“云数智”底盘再升级,背后的三重新价值
  17. 真实感水体渲染技术总结
  18. ssm酒店预订系统(ssm酒店管理系统民宿预订)ssm酒店客房预订系统宾馆JSP客房预订系统
  19. python lncrna_超简便的国产lncRNA预测工具LGC
  20. Ubuntu小技巧14--sed命令详解

热门文章

  1. EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用
  2. JSON.parse()、JSON.stringify()和eval()的作用
  3. controller,sevices层,java初步了解
  4. 洛谷 P1313 计算系数 —— 水题
  5. 用mac的chrome浏览器调试Android手机的网页
  6. X++中对字符串进行操作的函数
  7. tp5 分页php不能foreach,tp5框架无刷新分页实现方法分析
  8. 中img拉伸_8个拉伸动作,帮你调动全身肌肉,提高柔韧性,缓解疲劳放松心情...
  9. mysql 避免重复添加_MySql三种避免重复插入数据的方法
  10. 开源协议栈 rlc rrc_LTE的组网架构与接口协议