排序

查找是计算机的一项重要的操作,为了便于查找,通常希望计算机中的关键码是有序的,如有序表的折半查找,效率非常高。排序与查找一样,是一项重要的数据功能。下面了解数据结构中排序的基本概念:

(1)排序码

排序码又称之为关键码,如果数据结构中的关键码互不相同,此关键码称为主关键码!若关键码是主关键码,那么得到排序的结果是唯一的。

(2)排序算法的稳定性

稳定性可理解为两个相同的关键码,排序后的次序应该与排序前的次序是一致的,则称该算法是稳定的,否则不稳定的。

在内部排序中,直接选择排序,希尔排序,快速排序,堆排序是不稳定的。可以通过以下简单的例子判断:2,2,1

直接选择排序:1,2,2.

希尔排序:1,2,2

快速排序:1,2,2

堆排序例子:1,2,2->1,2,2

而冒泡排序,直接插入排序,归并排序则是稳定的。

(3)内排序与外排序

所谓内排序是把待排序序列完全放在内存中进行排序的,此方法适合不太大的元素序列。而外排序则需要访问外存储器,当序列中的元素足够多时,不能完全放到内存,则排序过程需要在内存与外存之间移动大量的数据。

(4)排序算法的时间复杂度与空间复杂度

时间复杂度即算法执行所需要的时间。空间开销指的是所需的辅助空间。

直接插入排序,冒泡排序,希尔排序,直接选择排序时间复杂度为O(n2).

而快速排序,归并排序,堆排序的时间复杂度为O(nlogn).

排序算法分为以下几大类:

(1)几种简单的排序算法

直接插入排序

冒泡排序

希尔排序

直接选择排序

(2)几种快速的排序算法

快速排序

树型选择排序

归并排序

堆排序

(3)外部排序

多路平衡归并排序

 

下面介绍一下外部排序实现的一般方法:

由于文件比较大,不能完全放入内存,因此,外部排序分为两个相互独立的过程:

首先把n个记录的文件分成k个子文件,把这k个子文件依次读入内存,进行排序,然后把得到的有序子文件重新写入到外存,通常这些有序子文件为归并段或串段,再对这些归并段进行归并直至得到整个有序文件为止。

 在以下的文章中会介绍每种排序方法的具体实现。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值