c语言排序算法_C语言写排序算法(二) —— 选择排序
上次联系的算法是冒泡排序,不知道小伙伴们还记得不,中间穿插了一下比特币相关的分享,嘿嘿。今天来分享一下选择排序。
算法描述:选择排序是从数组中选择最大(小)的元素放到数组的最后一个,然后往前移,接着从剩余未排序的元素中选择最大(小)的元素放到倒数第二个,依次类推,直到第二个元素被放好。
算法代码:
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语言写排序算法(二) —— 选择排序相关推荐
- 数据结构视频教程 -《[猎豹网校]数据结构与算法_C#语言》
整个视频打包下载地址:史上最全的数据结构视频教程系列分享之<[猎豹网校]数据结构与算法_C#语言>,转载请保留出处和链接! 更多优秀资源请访问:我是码农 在猎豹网校授课的基本都是在IT行业 ...
- 密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc
您所在位置:网站首页 > 海量文档  > 高等教育 > 实验设计 密码学_实验一_古典密码算法_C语言.doc8页 本 ...
- 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序
第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...
- c语言代码先来先服务算法_C语言十大经典排序算法(动态演示+代码,值得收藏)...
以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. 时间.空间复杂度比较 排序算法 平均时间复杂度 最差时间复杂度 空间复杂度 数据对象 ...
- 张仰彪第二排序法_C语言中的最常用的两种排序算法你知道吗?
冒泡法排序 核心思想:若有N个数从小到大排序,需进行N-1轮比较,第一轮每相邻的两个数据进行比较N-1次,最终挑选出最大的数,放到这一轮的最后位置:第二轮比较N-1-i次,挑选出这一轮最大的数,放入这 ...
- c语言pn,C++_C语言实现的PNPoly算法代码例子,写C语言的实验用到的一个算法 - phpStudy...
C语言实现的PNPoly算法代码例子 写C语言的实验用到的一个算法,判断一个点是否在多边形的内部.C的代码如下: int pnpoly(int nvert, float *vertx, float * ...
- java pnpoly算法_C语言实现的PNPoly算法代码例子
写C语言的实验用到的一个算法,判断一个点是否在多边形的内部.C的代码如下: int pnpoly(int nvert, float *vertx, float *verty, float testx, ...
- c语言什么叫为代码写注释算法,急!-伪代码不知哪位高手能够告诉我,什么是伪代码?伪代码编 爱问知识人...
表示一种算法,可以使用不同的方法,比如使用伪代码,自然语言,流程图,计算机语言等. 什么伪代码呢?伪代码(Pseudocode)是一种算法描述语言.使用伪代码的目的是为了使被描述的算法可以容易地以任何 ...
- c语言函数调用排序用插入法,C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)...
任务代码: 二分查找数组的一个数字:(函数法) #include int binarySearch(int a[],int len,int key) { int low=0,high=len-1,mi ...
最新文章
- 在cuDNN中简化Tensor Ops
- 通过 Jersey Http请求头,Http响应头,客户端 API 调用 REST 风格的 Web 服务
- python 智能识别 商品_阿里云货架商品识别与管理Python SDK使用示例-阿里云开发者社区...
- Spring MVC-表单(Form)标签-下拉框(Dropdown)示例(转载实践)
- Setup linux 网卡故障,linux网络配置、测试及故障诊断方法和工具二
- STM32工作笔记0027---理解电阻的串联和并联
- 找出矩阵中绝对值最大的元素及其位置_线性代数之——马尔科夫矩阵
- HTTP Basic Authentication验证WCF Data Service
- 最小二乘法、梯度下降法和两者区别
- jQuery操作Form表单元素
- hive分析函数取最新_Hive的分析函数的学习
- C#中,两个事件的叠加,结果会如何?
- Lisp入门(好文)
- ipoo3可以用鸿蒙,vivo新机入网!支持44W快充 配置与iQOO Neo3类似
- 免费从网盘下载的卫星影像和高程DEM如何使用?
- 【观察】 全新紫光云:“云数智”底盘再升级,背后的三重新价值
- 真实感水体渲染技术总结
- ssm酒店预订系统(ssm酒店管理系统民宿预订)ssm酒店客房预订系统宾馆JSP客房预订系统
- python lncrna_超简便的国产lncRNA预测工具LGC
- Ubuntu小技巧14--sed命令详解
热门文章
- EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用
- JSON.parse()、JSON.stringify()和eval()的作用
- controller,sevices层,java初步了解
- 洛谷 P1313 计算系数 —— 水题
- 用mac的chrome浏览器调试Android手机的网页
- X++中对字符串进行操作的函数
- tp5 分页php不能foreach,tp5框架无刷新分页实现方法分析
- 中img拉伸_8个拉伸动作,帮你调动全身肌肉,提高柔韧性,缓解疲劳放松心情...
- mysql 避免重复添加_MySql三种避免重复插入数据的方法
- 开源协议栈 rlc rrc_LTE的组网架构与接口协议