数据结构-选择排序
1、选择排序
选择排序就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之;
选择排序的主要优点与数据移动有关。
如果某个元素位于正确的最终位置上,则它不会被移动。
选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对 n 个元素的表进行排序总共进行至多 n - 1 次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
选择排序的算法步骤如下:
-
在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
-
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾;
-
以此类推,直到所有元素均排序完毕。
void SelectSort(SqList *L) { int i, j, min,count1,count2; count1 = count2 = 0; for (i = 1; i < L->length;i++) { min = i; //将当前下标定义为最小值下标 for (j = i + 1; j <= L->length;j++) //循环之后的数据 { count1++; if (L->r[min]>L->r[j]) //如果由小于当前最小值的关键字 min = j; //更新最小值 } if (i != min) //若是我们在上面循环中找到最小值,则min会改变,与i不同,就需要进行交换 { swap(L, i, min); count2++; } } printf("loop count:%d, swap count:%d\n", count1, count2); }
简单选择排序的性能要略优于冒泡排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧