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

CExercise_13_1排序算法_1插入排序

题目:

请自己手动实现插入排序算法:

// 插入排序 void insertion_sort(int arr[], int len);
然后给定一个int数组,实现将它从小到大进行排序。


关键点


分析:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在插入排序中,稳定性指的是排序算法能够保持相等元素的原始相对顺序不变。也就是说,如果原始数组中有两个相等的元素 A 和 B,且 A 出现在 B 之前,那么在排序后,A 仍然应该在 B 之前。


代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define ARR_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
/*插入排序 void insertion_sort(int arr[], int len);然后给定一个int数组,实现将它从小到大进行排序
*/// 打印数组函数
void print_arr(int arr[], int len) {for (int i = 0; i < len; i++) {//数组的长度len-1,下标从0开始.printf("%d ", arr[i]);}printf("\n");
}
void insertion_sort(int arr[], int len) {//从第二个元素开始比,因为只有一个元素的话默认有序.for (int i = 1;i < len;i++) {//外层for循环代表每一轮摸到的新手牌,也就是每一轮插入排序.int temp = arr[i];int j = i - 1;//下标j代表左边的元素.for (;j >= 0;j--) {if (arr[j] > temp) {//注意:不能加=,加了就不是稳定排序算法了arr[j + 1] = arr[j];}else {break;//只要发现一个更小和相等,说明找到插入位置了}}
//for循环结束的两种情况:1)j=-1时,循环结束,说明该数最小,所以插入到0这个位置,也就是j+1;//2)arr[j]<=temp 原本的数更小或相等,此时手牌放在j+1的位置arr[j + 1] = temp;print_arr(arr, len); //每一轮摸牌后查看排序后的数组}
}int main(void) {int arr[] = { 1,46,6,5,7,8,55,7,23,65,6 };int len = ARR_SIZE(arr);insertion_sort(arr, len);return 0;
}

解决方案总结:

相关文章:

  • 了解一下Unity的RenderQueue
  • 【基于Servlet技术处理表单】
  • 目标检测:YOLOv11(Ultralytics)环境配置
  • Vue 3 的组合式 API-hooks
  • HTTPS协议原理
  • 软件包安装管理Gitlab
  • PyTorch 根据官网命令行无法安装 GPU 版本 解决办法
  • MyBatis 详解
  • ffmpeg命令(一):信息查询命令
  • 日志查询:使用 less 命令搜索关键字的方法
  • Spring Boot 中使用 Netty
  • .Net 9 webapi使用Docker部署到Linux
  • Quipus,LightRag的Go版本的实现
  • 猫咪如厕检测与分类识别系统系列【九】视频检测区域在线绘制+支持摄像头+网络摄像头+整体构建【上】
  • 怎样完成本地模型知识库检索问答RAG
  • Linux命令+Git命令
  • mysql数据库的线程连接数、状态 、最大并发数、缓存等参数配置
  • Axios 介绍及使用指南
  • 字节跳动开源 Godel-Rescheduler:适用于云原生系统的全局最优重调度框架
  • 高并发三剑客-本地缓存之王Caffeine-01缓存应用
  • 国家发改委答澎湃:将建立和实施育儿补贴制度,深入实施提振消费专项行动
  • 专访|伊朗学者:美伊核谈不只是改革派立场,但伊朗不信任美国
  • 我国对国家发展规划专门立法
  • 视频丨伊朗阿巴斯港一处油罐发生高强度爆炸:造成大面积破坏,伤亡不明
  • 白俄罗斯驻华大使:应发挥政党作用,以对话平台促上合组织发展与合作
  • 商务部:汽车流通消费改革试点正在加快推进