数据结构----八大排序(C语言版)

本文介绍了八种常见的排序算法,包括直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序和归并排序,以及基数排序的特点。文章强调了时间复杂度与空间复杂度的重要性,并提供了相应的代码实现和稳定性分析。
摘要由CSDN通过智能技术生成


一、时间复杂度+空间复杂度

在这里插入图片描述

口诀: “插冒归”,它很稳 "插冒归"喜欢选冒插,插完就方了(平均情况O(n^2))

二、八大排序

直接插入排序

一种最简单的排序方法,依次将每个元素插入到一个有序的序列中。

在这里插入图片描述

1.采用顺序查找法查找插入位置

在这里插入图片描述

代码实现:
在这里插入图片描述

2.直接插入排序,使用“哨兵”法

在这里插入图片描述

折半插入排序

代码实现:

在这里插入图片描述

希尔排序

在这里插入图片描述

对每一个子表进行直接插入排序
eg.38和13是子表,连续存储空间(逻辑关系,不是真的连续存储),依旧是顺序表,13插入38之前,38往后移一位,即交换位置

步长 d=n/2;
d=d/2;

代码实现:

在这里插入图片描述

希尔排序的速度通常要比直接插入排序块,它是一种不稳定的排序算法。

冒泡排序

在这里插入图片描述

代码实现:

在这里插入图片描述

从后两两对比,更小的往前放。

快速排序

在这里插入图片描述
在这里插入图片描述

口诀解析:选择第一个元素将它移至临时变量temp中作为基准元素,且离开这个位置,用low指针指向空位,最右边的第一个元素用high指针指向它,与temp比较大小,若大于等于它元素不动,high指针往前指一个继续比较,若小于temp则放入low的空位中,并且现在换成low指针去指向下一个数据,继续与temp比较大小,若小于等于则low指针往后移,若大于temp放在右边high处的空位,又改成high指针指向的元素与temp比较大小…当low和high指向同一位置是,将基准元素放入那个位置。
总之这是一个low++,high–的过程,元素移动则换针比较。1

代码实现:

在这里插入图片描述

简单选择排序

在这里插入图片描述

该算法在n个元素中通过n-1次比较找出最小元素

堆排序

在这里插入图片描述

归并排序

在这里插入图片描述
在这里插入图片描述

基数排序

1.看个位
2.看十位
不需要进行关键字的比较
它是链式存储,在排序中是队列的数据结构,非常稳定.


最后,码字不易,如果觉得对你有帮助的话请点个赞吧,关注我,一起学习,一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值