常见排序算法介绍

本文详细介绍了几种常见的排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。这些排序算法的时间复杂度从O(n^2)到O(nlogn)不等,其中归并排序和快速排序效率较高。通过对排序原理的解析,帮助读者理解每种算法的工作机制及其在不同场景下的适用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请尊重原创,谢谢~

一、冒泡排序

 

 时间复杂度:O(n^2)

二、选择排序

时间复杂度:O(n^2)

三、插入排序

时间复杂度:O(n^2)

四、希尔排序

希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序的一种更高效的改进版。

排序原理:

1、选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;

2、对分好组的每一组数据完成插入排序;

3、减小增长量,最小减为1,重复第二步操作

增量 = 数组长度 / 2

五、归并排序 

排序原理:

1、尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每一个子组的元素个数是1为止;

2、将相邻的两个子组进行合并成一个有序的大组;

3、不断重复步骤2,直到最终只有一个组为止;

合并的过程

时间复杂度:O(nlogn)

六、快速排序

排序原理:

1、首先设定一个分界值,通过该分界值将数组分成左右两个部分;

2、将大于等于分界值的数据放在数组的右边,小于分界值的数据放在数组的左边,此时左边部分中各个元素都小于分界值,右边部分中各个元素都大于等于分界值;

3、然后,左边和右边的数据可以独立排序,对于左边的数组数据,同样取一个分界值,将该部分数据分成左右两个部分,同样左边放较小值,右边放较大值,右边的数组数据做同样的处理;

4、重复上述过程,可以看出,这是一个递归方式,通过递归左侧部分排好序后,再递归右侧部分的排序,当左侧和右侧两个部分的数组完全排好序,整个数组的顺序也就排好了;

快速排序的寻找切分分界值的过程:

 

时间复杂度:O(nlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值