您的位置:首页 > 理论基础 > 数据结构算法

数据结构及算法知识(四)

2017-07-24 16:55 225 查看
###排序###

内排序:在排序过程中,若整个表都是放在内存中处理,排序是不涉及内外存数据的交换,则称之为内排序。

外排序:若排序过程中要进行内外存数据的交换,则称之为外排序。

内排序适用于元素个数不是很多的小表,外排序适用于元素个数很多,不能一次将全部元素放入内存的大表。

内排序有:插入排序、交换排序、选择排序、归并排序、基数排序。

1、插入排序:每次将一个待排序的元素,按其关键字大小插入到已经排好序的子表的适当位置,直到全部元素插入完成为止。

插入排序:直接插入排序、折半插入排序、希尔排序。

直接插入排序:有两重循环构成,是稳定排序。

折半插入排序:采用折半查找方法找到插入位置,再通过移动元素进行插入。是稳定排序。

希尔排序:是一种分组插入方法。是不稳定排序。

2、交换排序:两两比较待排序元素的关键字,发现两个元素的次序相反即进行交换,直到没有反序的元素为止。

交换排序:冒泡排序、快速排序。

冒泡排序:整个算法从最下面的元素开始,对每两个相邻的关键字进行比较,且是关键字小的元素换至关键字大的元素之上,使得经过一趟冒泡排序之后,关键字最小的元素到达最上端,依次循环剩下的无序元素。是稳定排序。

快速排序:在排序的n个元素中仍取一个元素(通常取第一个元素)作为基准,比该元素关键字小的元素放置在前一部分,比该元素大的元素放置在后一部分,并将该元素排在两部分中间(归位)。依次对子表进行递归划分,直至子表的长度为0或1。是不稳定排序。

3、选择排序:每一趟从待排序的元素中选出最小的元素,顺序放在已排好序的子表的最后,直到全部元素排序完毕。适用于从大量的元素中选择一部分排序元素。

选择排序:直接选择排序(简单选择排序)、堆排序。

直接选择排序:从当前无序区中选出关键字最小的元素,将它与无序区的第一个元素交换,得到新的有序区和无序区,依次循环。是不稳定排序。

堆排序:不适用于元素数较少的表。是不稳定排序。

4、归并排序:是多次将两个或两个以上的有序表合并成一个新的有序表。是稳定排序。

5、基数排序:是稳定排序。

各种内排序方法的性能比较:



稳定性口诀:插泡归基稳,希速选堆否
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: