交换类排序法

冒泡排序(相邻比序法)

冒泡法

通过相邻记录进行交换,逐步将待排序序列变成有序序列的过程。

算法思想

第1趟:从第1个记录开始,扫描待排序记录序列,若相邻的两个记录逆序,则交换位置(消除一个逆序),最后第n个记录就是关键字最大的记录。
第2趟:同上述方法,对前n-1个元素冒泡排序,最后第n-1个记录就是次关键字最大的记录。
以此类推,直到第n-1趟完成后结束;或者在某一趟冒泡排序过程中没有发现一个逆序则可结束。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法分析

最好情况:有序。比较次数n-1次,移动次数0次,时间复杂度为O(n)。
最坏情况:逆序。比较次数n(n-1)/2次,移动次数3n(n-1)/2次,时间复杂度为O(n2)。
注:交换一次移动3次。
空间复杂度:O(1)。
稳定性:稳定。

快速排序法

算法改进要点

冒泡法:交换相邻元素只能消除一个逆序。
快排法:交换不相邻元素,可以消除多个逆序。

基本思想

一趟快排:把待排序列分成左右两个子表,左表的关键字均小于右表的关键字。
重复,直至所有子表为单记录。
枢轴元素:左右子表的分界记录。
基准记录:枢轴元素应该放置在左右子表的最中间位置(基准位置),因此基准记录同枢轴元素。
在这里插入图片描述
一趟快排
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
枢轴元素的选取:第一个记录、最后一个记录、中间的记录、中间值的记录、随机记录。

算法分析

最好情况:每趟划分后的左右子表长度相等,时间复杂度为O(nlog2n),称之为平均性能最佳。
最坏情况:已经有序,总的比较次数n(n-1)/2,时间复杂度为O(n2)。
平均情况:Tavg(n)=klog2n,时间复杂度为O(nlog2n)。
空间复杂度:O(log2n)。
稳定性:不稳定。
欢迎大家加我微信交流讨论(请备注csdn上添加)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程子的小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值