C笔记 - 算法:选择排序
选择排序
1 - 选择排序(Selection-sort):首先在未排序的序列中找到最小(大)元素,存放到将要排序序列的起始位置;然后再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾......以此类推,直到所有元素均排序完毕。其实质依旧是通过两两比较,找出最值放在你要排序的起始位置,如此循环完成排序
2 - 它是最稳定的排序算法之一,无论什么数据进去,时间复杂度都是 O(n2) 。唯一的好处可能就是不占用额外的内存空间
3 - 代码示例
1 #include <stdio.h> 2 int main(int argc, const char * argv[]) { 3 4 int array[] = {5,3,12,6,2,10}; 5 int length = 6; 6 7 // 外层:控制轮数 8 for (int i = 0; i < length-1; i ++) { 9 10 printf("第 %d 轮排序\n",i+1); 11 12 // 假设 i 是最小值的索引 13 int min = i; 14 15 // 内层控制每轮的比较次数 16 // 第一步:找出最值 17 for (int j = i+1; j<length; j++) { 18 // 升序排列:找出最值的索引 19 if(array[j] < array[min]){ 20 min = j; 21 } 22 } 23 24 // 第二步:交换位置 25 // 如果找出的实际最小索引 不是 假定的索引 26 if (min != i) { 27 28 int temp = array[i]; 29 array[i] = array[min]; 30 array[min] = temp; 31 } 32 33 // 打印排序结果 34 for (int i = 0; i < length; i++) { 35 printf("%d ",array[i]); 36 } 37 printf("\n---------------------\n"); 38 39 } 40 41 printf("\n最终排序结果\n"); 42 for (int i = 0; i < length; i++) { 43 printf("%d ",array[i]); 44 } 45 printf("\n"); 46 47 return 0; 48 }
日志信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)