数据结构学习笔记----排序

排序,就是要整理表中的元素,使之按关键字递增(或递减)有序排列。

如果待排序的表中,存在有多个关键字相同的元素,经过排序后这些具有相同关键字的元素之间的相对
次序保持不变,则称这种 排序算法是稳定的

在排序过程中,若整个表都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为 内排序
反之,若排序过程中要进行数据的内、外存交换,则称之为 外排序

数据结构中主要讲到了插入排序,交换排序,选择排序,归并排序,基数排序,外排序等几种排序,
每种排序都有不同的性能,根据情况来选择合适的排序算法。
其中插入排序,交换排序,选择排序,归并排序是基于比较的排序算法;
基数排序是不基于比较的排序算法。

基于比较的排序算法:
插入排序----直接插入排序算法:时间复杂度O(n^2),空间复杂度O(1),与待排序数据的顺序有关,稳定的
                    折半插入排序:时间复杂度O(n^2),空间复杂度O(1),与待排序数据的顺序有关,稳定的
                    希尔(Shell)排序:时间复杂度 O(n^1.3),空间复杂度O(1),与待排序数据的顺序有关,不稳定的

交换排序----冒泡排序算法:时间复杂度O(n^2),空间复杂度O(1),与待排序数据的顺序有关,稳定的
                    快速排序算法:时间复杂度 O(nlogn),空间复杂度O(logn),与待排序数据的顺序有关,不稳定的

选择排序----简单选择排序算法:时间复杂度O(n^2),空间复杂度O(1),与待排序数据的顺序无关,不稳定的
                    堆排序:时间复杂度 O(nlogn),空间复杂度O(1),与待排序数据的顺序无关,不稳定的

归并排序----二路归并排序算法:时间复杂度 O(nlogn),空间复杂度O(n),与待排序数据的顺序无关,稳定的

不基于比较的排序算法:
基数排序----最低位优先(LSD),最高位优先(MSD)
                    时间复杂度 O(d*(n+r)),空间复杂度O(r),与待排序数据的顺序无关,稳定的
                        d为关键字的元组,如关键字为456,则d为3;
                        r为基数,例如对于二进制数r=2,十进制数r=10;
                        n为待排序的关键字的个数。

外排序:外排序的基本过程为分两个步骤:生成若干初始归并段(顺串)和多路归并。
              多路归并就是将若干个有序文件归并成一个有序文件。
               多路归并有两种实现方法:一种是败者树,一种是最佳归并树(带权路径长度最短的K阶哈夫曼树)

各种排序的基本思路没有在笔记中记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值