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

C复习13(排序算法)

#技术笔记1.冒泡排序这个排序要能自己直接敲出来,由于每一轮有交换,导致数据就像冒泡泡一样,冒到数组的末尾,所以叫做冒泡排序。冒泡排序稳定时间复杂度O(n^2),空间复杂度O(1) (这里就给出一种代码从小到大的排序顺序冒了后面都是按从小到大的顺序排)void bubble_sort(int *arr, int len) { for (int i 0; i len; i) { bool swap_flag false; // 优化的地方 //如果已经排好序了,flag就为false直接结束了 for (int j 0; j len - i - 1; j) //优化的地方 { if (arr[j] arr[j 1]) { SWAP(arr, j, j 1); //用了个交换宏 swap_flag true; } } if (swap_flag false) { break; } arr_print(arr, len); } }2.选择排序就是划分一个已排序区和未排序区刚开始都是未排序的然后选一个最小的放入已排序区以此类推。选择排序不稳定平均时间复杂度O(n^2),空间复杂度O(1)。插入排序就是从左往右每次把当前的元素往前面已排好序的地方插入到合适的位置。插入排序稳定平均时间复杂度O(n^2),空间复杂度O(1)。希尔排序插入排序的升级版先让数组大致有序(按间隔切分子序列)再最后一次插入排序完成排序结果。希尔排序不稳定平均时间复杂度取决于增量序列,空间复杂度O(1)。3.快速排序前面C复习Day10那篇文章用的一个qsort函数(在stdlib.h中)就是快速排序函数具体代码参考源码。快速排序简而言之选一个基准分左右再递归求解基准选择好坏就关系时间复杂度了选不好容易让快排达到选择排序的效果。快速排序稳定平均时间复杂度O(nlogn),空间复杂度O(logn)。(代码如下)void parition(int arr[], int left, int right) { if (left right) { return; } //一般可以选第一个元素当枢轴位置,这里随机一个 int pivot_index (rand() % (right - left 1)) left; int pivot_value arr[pivot_index]; SWAP(arr, right, pivot_index); //跟最右边一个交换一下,然后准备从左边开始交换 int cur_l left; int cur_r right; while (cur_l cur_r) { while (cur_l cur_r arr[cur_l] pivot_value) { //说明此次不需要交换,直接继续找要交换的元素 cur_l; } if (cur_l cur_r) { arr[cur_r] arr[cur_l]; } while (cur_l cur_r arr[cur_r] pivot_value) { cur_r--; } if (cur_l cur_r) { arr[cur_l] arr[cur_r]; } } // 上述操作完成, 确定一个枢轴一定在正确的排序位置 arr[cur_l] pivot_value; parition(arr, left, cur_l - 1); //递归处理剩下的 parition(arr, cur_l 1, right); } void quick_sort(int arr[], int len) { srand(time(NULL)); //设计一个随机种子值 parition(arr, 0, len - 1); }4.归并排序归并排序就是先拆分成一个一个的元素再两两合并起来把数组一分为二一分为二一分为二直到分成一个一个再递归的把左右的一个个元素排序再将两个有序数组合并。归并排序稳定平均时间复杂度O(nlogn),空间复杂度O(n)。5.堆排序堆排序就是把数组当成完全二叉树反复从堆顶取数据进行排序建一个大根堆每次堆顶和最后一个元素交换堆大小减1再对新堆顶进行下沉判断下沉后继续判断直到恢复大根堆形态再重复此过程。堆排序不稳定平均时间复杂度O(nlogn),空间复杂度O(1)。

相关文章:

C复习13(排序算法)

#技术笔记1.冒泡排序这个排序要能自己直接敲出来,由于每一轮有交换,导致数据就像冒泡泡一样,冒到数组的末尾,所以叫做冒泡排序。冒泡排序稳定,时间复杂度O(n^2),空间复杂度O(1) (这里就给出一种代码,从小到大的排序顺序冒了,后面都是按从小到…...

mysql5.7的rownumber写法

db2中的语句select * from ( select rownumber() over (order by a.stdcno) as num , a.id ,b.cuno from t1 a ,t2 b where a.id b.id ) as Amysql5.7中的语句select cast(row_num : row_num 1 as char) AS num , A.* from (select row_num :0) r,( select a.id, b.cuno fro…...

新概念英语第一册141_Sally s first train ride

Lesson 141: Sally’s first train ride 萨莉第一次乘火车旅行 Watch the story and answer the question Why was the mother embarrassed? Because Sally said the middle-aged lady was ugly.Key words and expressions excited 兴奋的get on 登上middle-age…...

为什么越来越多工程师选择英飞凌芯片?优势分析

作为一名在嵌入式硬件领域从业多年的工程师,我经常被问到这样一个问题:“英飞凌芯片好不好?值不值得在项目中优先考虑?”说实话,前几年我对这个问题还有些犹豫,但近几年随着项目经验的积累,尤其…...

昆仑通态屏幕制作(进阶篇)---动态交互设计(滑块控制与状态反馈)

1. 滑块控制的动态联动实现 在工业控制场景中,滑块是最直观的交互控件之一。昆仑通态屏幕的滑块控制功能,可以实现对设备参数的精细调节。比如控制电机转速、调节温度设定值等场景,都需要滑块输入与其他显示元素的动态联动。 1.1 滑块与进度…...

Blender 3MF插件终极指南:5步实现3D打印工作流优化

Blender 3MF插件终极指南:5步实现3D打印工作流优化 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat插件是Blender生态系统中专为3D打印工作流…...

相机照片详细参数怎么修改?4款工具,新手零失误

拍好的照片参数不对真的很糟心!要么光圈显示错了,要么ISO、焦距乱标,相机型号还可能被搞错。想改却找不到简单的工具,要么软件太复杂,要么改完参数不生效,甚至把原图画质搞坏了。其实用对工具超简单&#x…...

如何修改图片的exif信息?6款工具,新手也能秒会

一、什么是EXIF信息?为什么要修改?EXIF信息就像图片的"身份证",记录着拍摄时的详细数据,比如相机型号、拍摄时间、GPS位置、光圈快门等参数。平时发朋友圈、传文件时,如果不注意这些信息,可能会不…...

打造你的私人游戏云:Sunshine串流服务器从零到精通

打造你的私人游戏云:Sunshine串流服务器从零到精通 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为游戏设备限制而烦恼吗?想在任何地方都能畅玩你的P…...

874653

867453...

sdu软件学院创新实训(三)

基于lx同学构建的原型系统,进行了两次迭代 原型系统情况 队友搭建起了基本的后端springboot和langchain4j框架,以及小程序前端。 实现了对大模型的基本调用问答。完成milvus向量数据库的连接。 待解决的问题: 原型系统出于测试,显…...

“怪奇物语物流假设”:当交通被转移到另一个世界

在《怪奇物语》中,颠倒世界作为现实世界的镜像维度,始终以一种危险而不可控的形式存在:它与现实重叠,却又充满腐败与入侵性。然而,如果暂时搁置这种叙事中的恐怖属性,我们可以提出一个反直觉的问题——如果…...

HTML----列表与表格

一、列表标签1.<ul>:无序列表标签&#xff0c;用来放没有先后顺序的并列内容2.<ol>:有序列表标签&#xff0c;用来存放有明确先后顺序的步骤内容3.<li>:列表项&#xff0c;不管是<ul>还是<ol>里面都只能放.<li>&#xff0c;不能直接写文字…...

ffmpeg的安装与配置

一、ffmpeg简介FFmpeg 是一套开源、免费且功能极其强大的跨平台音视频处理框架&#xff0c;在业界被广泛誉为“音视频处理的瑞士军刀”。无论你是想进行简单的格式转换&#xff0c;还是开发复杂的流媒体服务&#xff0c;FFmpeg 都是目前最核心的底层工具。以下是关于它的核心简…...

毕业设计实战-PyQt5-YOLOv8-鱼类尺寸智能测量系统,融合OpenCV图像处理与Modbus工业通信

1. 项目背景与应用场景 水产养殖行业一直面临着鱼类生长监测的难题。传统的人工测量方法不仅效率低下&#xff0c;而且容易对鱼群造成应激反应。我在参与某大型养殖场智能化改造项目时&#xff0c;就亲眼见过工人需要每天抽样捞鱼测量的场景——既费时费力&#xff0c;测量数据…...

工业AI实战:如何用Python+UNet打造轨道缺陷智能检测系统

工业AI实战&#xff1a;PythonUNet构建高精度轨道缺陷检测系统 在轨道交通运维领域&#xff0c;肉眼检测钢轨表面缺陷的传统方式正被AI技术革新。这套基于UNet的智能检测系统&#xff0c;能在毫秒级完成裂缝、剥落等缺陷的定位与分类&#xff0c;准确率超越人工检测3倍以上。我…...

如何高效使用智能清理工具:Windows Cleaner完整操作指南

如何高效使用智能清理工具&#xff1a;Windows Cleaner完整操作指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为电脑C盘爆红而焦虑吗&#xff1f;Windo…...

3步解锁网易云加密音乐:ncmdump实战解密指南

3步解锁网易云加密音乐&#xff1a;ncmdump实战解密指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲只能在特定客户端播放而烦恼吗&#xff1f;当你想要在车载音响、专业音频软件或跨设备上欣赏音乐时…...

RAG系统必看!混合检索、关键词、语义一次讲清,生产级方案选型指南

本文深入探讨了RAG系统中检索层的核心重要性&#xff0c;对比了语义检索、关键词检索和混合检索三种方式的特点与适用场景。指出单一检索方式存在致命盲区&#xff0c;生产级RAG必须采用混合检索。文章详细解析了关键词检索的两种技术路线&#xff08;稀疏向量和全文索引&#…...

三月七小助手:5步掌握崩坏星穹铁道全自动游戏助手终极指南

三月七小助手&#xff1a;5步掌握崩坏星穹铁道全自动游戏助手终极指南 【免费下载链接】March7thAssistant 崩坏&#xff1a;星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 你是否厌倦了每天重复的清体力、做日常、领奖励…...

彻底禁用Windows安全警告弹窗:组策略与命令行的终极指南

1. 为什么Windows总弹出安全警告&#xff1f; 每次双击下载的exe文件时&#xff0c;那个黄底黑字的警告框就像个尽职的保安&#xff0c;非要问你"确定要开门吗&#xff1f;"。我帮客户维护服务器时&#xff0c;发现这个设计本意是好的——防止恶意脚本自动运行。但当…...

湿敏电阻HR202的两种驱动方案实测:IO充放电法 vs. 交流方波AD采样,哪个更适合你的项目?

湿敏电阻HR202驱动方案深度评测&#xff1a;IO充放电法与交流方波AD采样的实战抉择 在物联网设备与智能家居快速普及的今天&#xff0c;环境湿度监测已成为许多项目的标配功能。面对市场上动辄数十元的数字式温湿度模块&#xff0c;越来越多的工程师开始关注成本仅需几元钱的湿…...

实战指南(一)易语言与大漠插件:从零打造自动化脚本的避坑手册

1. 易语言与大漠插件入门指南 第一次接触易语言和大漠插件时&#xff0c;我完全被它们的强大功能震撼到了。易语言作为一款中文编程工具&#xff0c;对新手特别友好&#xff0c;而大漠插件则是自动化脚本开发的利器。记得刚开始学习时&#xff0c;我花了一整天时间才成功调通第…...

蓝牙耳机连接背后的秘密:SDP协议在A2DP配对中的关键作用

蓝牙耳机连接背后的秘密&#xff1a;SDP协议在A2DP配对中的关键作用 每次打开蓝牙耳机&#xff0c;手机总能自动识别并恢复上次的音量设置和播放控制——这种无缝体验背后&#xff0c;隐藏着一套精妙的协议对话机制。就像餐厅老顾客无需重复点单&#xff0c;蓝牙设备间的"…...

SVG、XML 及其生态技术全景指南:从基础规范到工程实践

XML&#xff08;Extensible Markup Language&#xff09;并非单一工具&#xff0c;而是一套可扩展的元语言规范&#xff0c;其核心价值在于定义结构化数据的语法框架。 基于 XML 的各类应用标准&#xff08;XML-based applications&#xff09;在 Web、出版、科学计算、工业控…...

从GKCTF 2021 CheckBot看CSRF攻击的实战应用

1. CSRF攻击初探&#xff1a;从CheckBot题目说起 第一次看到GKCTF 2021的CheckBot题目时&#xff0c;我眼前一亮——这简直是个教科书级的CSRF实战案例。题目设计得很巧妙&#xff1a;你需要让一个自动化的bot&#xff08;可以理解为模拟管理员行为的程序&#xff09;点击你构造…...

利用Kali与Seeker实现位置追踪:技术原理与防范策略

1. Kali与Seeker位置追踪技术揭秘 你可能听说过黑客能通过一个链接获取你的精确位置&#xff0c;听起来像电影情节对吧&#xff1f;但实际上&#xff0c;这种技术门槛比想象中低得多。我去年在安全测试中就曾用Kali Linux配合Seeker工具&#xff0c;成功复现了这种位置追踪攻击…...

免费获取米哈游游戏字体:11款架空文字完整安装指南

免费获取米哈游游戏字体&#xff1a;11款架空文字完整安装指南 【免费下载链接】HoYo-Glyphs Constructed scripts by HoYoverse 米哈游的架空文字 项目地址: https://gitcode.com/gh_mirrors/ho/HoYo-Glyphs 想要为你的设计作品注入米哈游游戏的独特魅力吗&#xff1f;…...

基于springboot乡镇卫生所医用物资进销存系统设计与实现_qn3ueh40

前言 乡镇卫生所作为基层医疗服务机构&#xff0c;承担着为当地居民提供基本医疗服务和公共卫生服务的重要职责。然而&#xff0c;由于资源有限、管理手段落后等原因&#xff0c;乡镇卫生所在医用物资管理方面普遍存在库存不准确、采购不及时、物资浪费或短缺等问题。基于Sprin…...

终极指南:3步轻松解锁网易云音乐加密文件,让音乐随处播放

终极指南&#xff1a;3步轻松解锁网易云音乐加密文件&#xff0c;让音乐随处播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的尴尬时刻&#xff1f;精心收藏的网易云音乐歌曲&#xff0c;想在车载音响上播…...