C语言之排序

1.冒泡排序

冒泡排序就不多说了,只需要两层循环嵌套,两两比较确定相对正确的顺序即可。

2.插入排序

插入排序的思想就是每一次向后寻找一个再将其与前面有序的部分进行对比,寻找合适位置插入。

这里关键要避免让前移超出目前读取的数字,否则后面就会导致最好排序完会有最后一个数字没有进行排序。

3.堆排序

首先我们对进入的数组进行建堆,升序建大堆,大的在上,然后依次将堆顶和最后一个叶子节点交换,然后再将顶点进行下滤。一遍走完就可以实现排序。

4.选择排序

其思想就是每次找到序列中最大和最小的两个数分别放入两端

5.希尔排序

这个思想是基于插入排序的升级,开始就先将相距较远的数进行调整,减少后面的无用微调。

6.快速排序(都可以通过三值取中,小区间优化进行优化)

第一种霍尔经典排序,取左值作为key则右边先走,反之左边先走,防止卡死。

一边走到不符合一边区间的值,另外一边再走知道都到了不符合的地方进行交换,直至相遇,交换完毕,将key放入。

第二种,挖坑法,先传值,然后把坑给丢过去。

3.前后指针法,向后面找小于key的扔到前面。找完为止,最后再将key进行放入即可。

以上三种方式只是形式不同,思想内核是相同的。

下面是快排的核心思想实现。

通过人工栈进行模拟递归,可以防止爆栈。

7.归并排序

思想就是先2个2个排序然后4个4个直到全部排序完

非递归版本则是主要通过gap控制每次归并得个数,实现,2个归,4个归得顺序。特别要防止得就是越界问题!!第一点就是区间得越界检查,第二点是拷贝得个数检查。

8.计数排序

统计出现得次数去进行伪排序。

稳定性的概念

容易误解为排序方法快慢的稳定性

相关推荐
智驱力人工智能3 分钟前
无人机车辆密度检测系统价格 询价准备 需要明确哪些参数 物流园区无人机车辆调度系统 无人机多模态车流密度检测技术
深度学习·算法·安全·yolo·无人机·边缘计算
福尔摩斯张3 分钟前
【实战】C/C++ 实现 PC 热点(手动开启)+ 手机 UDP 自动发现 + TCP 通信全流程(超详细)
linux·c语言·c++·tcp/ip·算法·智能手机·udp
罗湖老棍子4 分钟前
【例3-3】医院设置(信息学奥赛一本通- P1338)
数据结构·c++·算法·
不想写笔记5 分钟前
算法 C语言 冒泡排序
c语言·笔记·算法·排序算法
xu_yule11 分钟前
算法基础-路径类dp
算法
智驱力人工智能14 分钟前
从项目管理视角 拆解景区无人机人群密度分析系统的构建逻辑 无人机人员密度检测 无人机人群密度检测系统价格 低空人群密度统计AI优化方案
人工智能·深度学习·算法·安全·无人机·边缘计算
历程里程碑14 分钟前
C++ 4:内存管理
java·c语言·开发语言·数据结构·c++·笔记·算法
The Last.H14 分钟前
Codeforces Round 1069 (Div. 2)
算法
LYFlied15 分钟前
【每日算法】LeetCode 76. 最小覆盖子串
数据结构·算法·leetcode·面试·职场和发展
LXS_35719 分钟前
Day17 C++提高 之 类模板案例
开发语言·c++·笔记·算法·学习方法