C笔记 - 算法:选择排序
2021/10/24 9:10:19
本文主要是介绍C笔记 - 算法:选择排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
选择排序
1 - 选择排序(Selection-sort)是一种简单直观的排序算法
2 - 工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
以此类推,直到所有元素均排序完毕
3 - 它表现最稳定的排序算法之一,无论什么数据进去都是 O(n2) 的时间复杂度
唯一的好处可能就是不占用额外的内存空间
4 - 代码示例
1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 6 // 随便搞个数组 7 int array[] = {5,3,12,6,2,10}; 8 int length = sizeof(array)/sizeof(array[0]); 9 10 11 // 外层控制轮数: 需要(leng - 1)次 12 for (int i = 0; i < length-1; i ++) { 13 14 printf("第 %d 轮排序\n",i+1); 15 16 // 假设 i 是最小值的索引 17 int min = i; 18 19 // 内层控制每一轮的比较次数 20 for (int j = i+1; j<length; j++) { 21 22 // 升序:遍历最小值(索引) 23 if(array[j] < array[min]){ 24 min = j; 25 } 26 } 27 28 // 交换位置:如果最小索引不是假定的索引 29 if (min != i) { 30 int temp = array[i]; 31 array[i] = array[min]; 32 array[min] = temp; 33 } 34 35 // 打印排序结果 36 for (int i = 0; i < length; i++) { 37 printf("%d ",array[i]); 38 } 39 printf("\n---------------------\n"); 40 41 } 42 43 printf("\n最终排序结果\n"); 44 for (int i = 0; i < length; i++) { 45 printf("%d ",array[i]); 46 } 47 printf("\n"); 48 49 } 50 return 0; 51 }
日志输出
这篇关于C笔记 - 算法:选择排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27文件掩码什么意思?-icode9专业技术文章分享
- 2024-12-27如何使用循环来处理多个订单的退款请求,代码怎么写?-icode9专业技术文章分享
- 2024-12-27VSCode 在编辑时切换到另一个文件后再切回来如何保持在原来的位置?-icode9专业技术文章分享
- 2024-12-27Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品 审核中
- 2024-12-27TypeScript面试真题解析与实战指南
- 2024-12-27TypeScript大厂面试真题详解与解析
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解