当前位置: 首页 > news >正文

Day7C语言前期阶段算法之选择排序

选择排序的基本思想

核心概念:每次从待排序的数据中找出最小(或最大)的元素,放到已排序序列的末尾。

比喻理解
就像整理一副扑克牌:

  1. 从所有牌中找出最小的,放在最左边

  2. 从剩下的牌中再找出最小的,放在刚才那张的右边

  3. 重复直到所有牌都排好

排序过程:

初始: [64, 25, 12, 22, 11]

第1轮

  • 在[64,25,12,22,11]中找到最小值11

  • 交换64和11 → [11, 25, 12, 22, 64]

第2轮

  • 在[25,12,22,64]中找到最小值12

  • 交换25和12 → [11, 12, 25, 22, 64]

第3轮

  • 在[25,22,64]中找到最小值22

  • 交换25和22 → [11, 12, 22, 25, 64]

第4轮

  • 在[25,64]中找到最小值25(已在正确位置)

  • 无需交换 → [11, 12, 22, 25, 64]

最终: [11, 12, 22, 25, 64]

#include <stdio.h>// 选择排序函数
void selectionSort(int arr[], int n) {int i, j, min_index, temp;// 外层循环:控制排序的轮数,每轮确定一个最小元素的位置for (i = 0; i < n - 1; i++) {// 假设当前轮次的第一个元素是最小的min_index = i;// 内层循环:在未排序部分中寻找真正的最小元素for (j = i + 1; j < n; j++) {// 如果找到更小的元素,更新最小元素的索引if (arr[j] < arr[min_index]) {min_index = j;}}// 将找到的最小元素与当前轮次的第一个元素交换if (min_index != i) {temp = arr[i];arr[i] = arr[min_index];arr[min_index] = temp;}// 可选:打印每轮排序后的数组状态,便于理解printf("第%d轮排序后: ", i + 1);for (int k = 0; k < n; k++) {printf("%d ", arr[k]);}printf("\n");}
}// 打印数组函数
void printArray(int arr[], int n) {for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");
}int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr) / sizeof(arr[0]);printf("=== 选择排序演示 ===\n");printf("原始数组: ");printArray(arr, n);printf("\n");// 调用选择排序函数selectionSort(arr, n);printf("\n排序后的数组: ");printArray(arr, n);return 0;
}

http://www.dtcms.com/a/511531.html

相关文章:

  • 测试计划包含哪些内容?
  • 白描OCR文案识别
  • 企业 宣传 还要网站吗dxc采集wordpress插件
  • PCIe协议之 LTSSM状态机篇 之 关于链路宽度改变的图示讲解(一)Autonomous Change
  • 建设学校网站策划书网站即将上线 模板
  • [人工智能-大模型-30]:大模型应用层技术栈 - 上下文增强层:谁掌握了更高效、更精准的上下文增强能力,谁就能构建出真正有价值的智能系统。
  • ATAM,SAAM,DSSA详解(系统架构)
  • 软考高级-系统架构设计师案例专题三:系统开发基础
  • 实模式下的地址分段
  • clickhouse 检查是否有删除语句在执行
  • 网站职能怎么将自己的视频推广出去
  • ubuntu22.04 ros2 kobuki底盘控制全纪录
  • 深圳网站建设外贸公司做单抗药的看什么网站好
  • 植物大战僵尸杂交版v3.12最新版本(附下载链接)
  • 云手机的安全保护措施有哪些?
  • 计算机毕业设计240—基于python+爬虫+html的微博舆情数据可视化系统(源代码+数据库)
  • 制作梦核的网站做h网站
  • 本地部署开源数据分析平台 Elastic Stack 并实现外部访问( Windows 版本)
  • 高性能组件_线程内存redis_Mysql_内存序_malloc
  • 2025年前端技术全景指南:从基础到架构的实战手册
  • RuoYi/ExcelUtil修改(导入excel表时,表中字段没有映射上数据库表字段)
  • C++ 分治 快排铺垫 三指针 力扣 75.颜色分类 题解 每日一题
  • 预测算法:股票数据分析预测系统 股票预测 股价预测 Arima预测算法(时间序列预测算法) Flask 框架 大数据(源码)✅
  • 门户网站需要多少空间如何引流被动加好友微信
  • 网站的 联系我们怎么做关键词优化难易
  • 【Java】基于 Tabula 的 PDF 合并单元格内容提取
  • Android 系统的进程模型
  • vue2实现pdf预览兼容低版本浏览器
  • Android Compose 状态的概念
  • spark组件-spark core(批处理)-rdd持久化机制