当前位置: 首页 > 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缓存应用
  • 讲武谈兵|朝鲜“崔贤”号驱逐舰下水,朝版“宙斯盾”战力如何?
  • 居委业委居民群策群力,7位一级演员来到上海一小区唱戏
  • 美国务院宣布新一轮与伊朗相关的制裁
  • 央行就《关于规范供应链金融业务引导供应链信息服务机构更好服务中小企业融资有关事宜的通知》答问
  • 抗美援朝老战士宁昭逝世,享年93岁
  • 违规行为屡禁不止、责任边界模糊不清,法治日报:洞穴探险,谁为安全事故买单?