排序算法 选择排序 SelectSort -- C语言实现
1.排序算法 冒泡排序 BubbleSort -- C语言实现
2.排序算法 选择排序 SelectSort -- C语言实现
3.排序算法 归并排序 MergeSort -- C语言实现4.排序算法 希尔排序 ShellSort -- C语言实现5.排序算法 快速排序 quickSort -- C语言实现6.排序算法 插入排序 InsertSort -- C语言实现7.排序算法 基数排序 RadixSort --C语言实现8.排序算法 内省排序(STL sort) IntroSort --C/C++9.排序算法 常见排序算法特性比较10.排序算法 排序性能测试代码(随机数调整,高精度时间) - C++直接选择排序
描述
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了。
选择排序的缺点:
- 效率低下:选择排序的时间复杂度始终是 𝑂(𝑛2),无论最好、平均还是最坏情况。这使得它在处理大量数据时效率极低。
- 非稳定排序:选择排序是不稳定的排序算法,即相等的元素在排序后可能会改变原有的相对顺序。
- 大量的比较操作:在每一轮迭代中,选择排序都需要遍历未排序的部分以寻找最小(或最大)元素,这导致了大量的比较操作。
算法步骤
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
代码实现
/*交换函数*/ static void Swap(int *p1, int *p2) { int tmp = 0; tmp = *p1; *p1 = *p2; *p2 = tmp; } void SelectSort(int *a, int n) { int begin = 0; int end = n - 1; int maxi = begin; int mini = begin; while (begin < end) { for (int i = begin + 1; i <=end; i++) //找最大最小数 的下标 { if (a[i] < a[mini]) { mini = i; } if (a[i] > a[maxi]) { maxi = i; } } Swap(&a[begin], &a[mini]); if (maxi == begin) //maxi刚好处于begin时,需修正 { maxi = mini; } Swap(&a[end], &a[maxi]); begin++; end--; } }
本文来自博客园,作者:HJfjfK,原文链接:https://www.cnblogs.com/DSCL-ing/p/18344191
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了