Java数据结构与算法(排序)——排序算法总结分析

一、排序算法的稳定性

若待排序的记录序列中存在两个或两个以上的关键字相等的记录,排序结果可能存在不唯一的情况,由此给出稳定与不稳定的情况。

假设 k i = k j k_i = k_j ki=kj 1 ≤ i ≤ n 1 \leq i \leq n 1in 1 ≤ j ≤ n 1 \leq j \leq n 1jn i ≠ j i \neq j i=j),且在排序前的序列中 k i k_i ki 领先于 k j k_j kj(即 i< j)。如果排序后 k i k_i ki 仍领先于 k j k_j kj,则称所用的排序方法是稳定的;反之,称不稳定。就是说,对于序列中相同的数,在排序后还能否保持相对位置不变。

例如,序列 1,2,3,4,2,5 中有两个 2,若排序后第一个 2 还位于第二个 2 的左边,该算法就是稳定的;否则就是不稳定的。

稳定的排序算法:

冒泡排序、插入排序、归并排序、桶排序、计数排序和基数排序。

不稳定的排序算法:

选择排序、快速排序、希尔排序。

二、内排序与外排序

内排序——数据记录在内存中进行排序;

外排序——因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

常见的排序算法,如插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序、计数排序等,都是内排序。

三、时间复杂度:

(1)平方阶 ( O ( n 2 ) O(n ^ 2) O(n2)) ——插入排序、选择排序和冒泡排序;

(2)线性对数阶 ( O ( n l o g n ) O(nlogn) O(nlogn)) ——快速排序、希尔排序和归并排序;

(3)线性阶 ( O ( n ) O(n) O(n)) ——基数排序、计数排序和桶排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值