数据结构导论-插入排序和交换排序

首先排序分为两大类:内部排序,外部排序,咱们只讨论内部的

一、插入排序

分为直接插入排序、折半插入排序和希尔排序

(1)直接插入排序:

一种情况是数据递减序,数据比较和移动量最大,时间复杂度达到O(n²);

另一种情况数据是递增序,比较和移动最少为O(n)

(2)折半插入排序

由于插入第i个元素到R[1]到R[i-1]之间时,前i个数据是有序的,所以可以用折半查找确定插入位置,然后插入

(3)希尔排序

在实际应用中,步长的选取可简化为表长n的一半(n/2),以后每次减半,最后为1。插入的改进,最后一趟已基本有序,比较次数和移动次数相比直接插入最后一趟更少

二、交换排序

分为冒泡排序、快速排序

(1)冒泡排序

重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

(2)快速排序

一种情况:每次支点总在中间,时间复杂度为O(nlog2n),平均O(nlog2n)。

最坏情况:数据已是递增或递减,O(n2)。key的选择越靠近中央,即左右两个子序列长度越接近,排序速度越快。越无序越快。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值