数据结构—排序

本篇主要介绍这八大排序,这八大排序是数据结构篇非常重要的内容,虽然看起来很多,我一开始也是这样感觉,但是自己尝试复现后,感觉也没有那么难,相信大家也可以的!!!

1、插入排序

(1)直接插入排序 O(N)~O(N^2)

基本思想:把待排序的数据按其数据值的大小逐个插入到一个已经排好序的有序序列中,直到所有的数据被插入完为止,得到一个新的有序序列

<1>具体介绍与过程

<2>代码实现

(2)希尔排序 O(N^1.3)

基本思想:希尔排序法又称缩小增量法;先选定一个整数(通常是gap=n/3+1),把待排序数据分成各组,所有距离相等的数据分在同一组内,并对每一组内的数据进行排序,然后gap=gap/3+1得到下一个整数,再将数组分成各组,进行插入排序,当gap=1时,相当于直接插入排序

<1>具体介绍与过程

<2>代码实现

2、选择排序

(1)直接选择排序 O(N^2)

基本思想:每一次从待排序的数据元素中选出最小和最大的一个元素,存放在序列的起始/末尾位置,直到全部待排序元素排完

<1>具体介绍与过程

<2>代码实现

(2)堆排序

基本思想:是指利用堆积树这种数据结构所设计的一种排序算法,它是选择排序的一种;它是通过堆来进行选择排序;需要注意的是排升序要建大堆,排降序建小堆

<1>具体介绍和过程

<2>代码实现

3、交换排序

(1)快速排序(递归版本)

基本思想:是一种二叉树结构的交换排序方法;任取待排序的元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子树列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止

<1>具体介绍和过程

<2>代码实现

(2)快速排序(非递归版本)

基本思想:借助数据结构------栈;

<1>具体介绍和过程

<2>代码实现

(3)冒泡排序

基本思想:冒泡排序是一种最基础的交换排序(具有教学意义);之所以叫做冒泡排序,因为每一个元素都可以像一个小气泡一样,根据自身大小一点一点向数组的一侧移动

<1>具体介绍和过程

<2>代码实现

4、归并排序

(1)归并排序

基本思想:采用分治法的一个非常典型的应用;将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段有序;若将两个有序表合并成一个有序表,称为二路归并

<1>具体介绍和过程

<2>代码实现

5、不比较排序

(1)计数排序

基本原理:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用

1)统计相同元素出现次数

2)根据统计的结果将序列回收到原来的序列中

<1>具体介绍和过程

<2>代码实现

相关推荐
学不动CV了1 小时前
C语言32个关键字
c语言·开发语言·arm开发·单片机·算法
小屁孩大帅-杨一凡2 小时前
如何解决ThreadLocal内存泄漏问题?
java·开发语言·jvm·算法
Y1nhl3 小时前
力扣_二叉树的BFS_python版本
python·算法·leetcode·职场和发展·宽度优先
syzyc4 小时前
[ABC267F] Exactly K Steps
数据结构·动态规划·题解
向阳逐梦5 小时前
PID控制算法理论学习基础——单级PID控制
人工智能·算法
2zcode5 小时前
基于Matlab多特征融合的可视化指纹识别系统
人工智能·算法·matlab
Owen_Q5 小时前
Leetcode百题斩-二分搜索
算法·leetcode·职场和发展
矢志航天的阿洪5 小时前
蒙特卡洛树搜索方法实践
算法
草莓熊Lotso6 小时前
【数据结构初阶】--顺序表(二)
c语言·数据结构·经验分享·其他
汤姆爱耗儿药6 小时前
数据结构——散列表
数据结构·散列表