编程-链表之希尔排序堆排序归并排序快速排序

Posted 老光的一生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程-链表之希尔排序堆排序归并排序快速排序相关的知识,希望对你有一定的参考价值。

    从上周五到今天,快一周了,一直不愿意学习,也不知道我的时间都用来做什么了。

    冒泡排序、选择排序、直接插入排序已经很熟了,这次用链表实现希尔排序、堆排序、归并排序、快速排序。

    算法我是从大话数据结构上学的,想用在单链表中,结果发现希尔排、堆排和快排不方便用在单链表上,单链表寻址不方便。


1.希尔排序:插入排序的升级,将相距某个“增量”的记录组成一个子序列,分别对子序列进行直接插入排序,随着“增量”减小,每组子序列包含记录增多,当“增量”减至1时,所有记录组成一个序列,算法结束。


2.堆排序:选择排序的升级,将待排序列构成一个大顶堆,此时序列最大值就是堆顶的根节点,将根节点和末尾元素交换;然后将剩下的n-1个序列重新构成一个大顶堆,这样就会获得n个序列中的次大值。如此反复,便能得到一个有序的序列。

大顶堆:是每个节点值都大于或等于其左右孩子节点值的完全二叉树。

小顶堆:是每个节点值都小于或等于其左右孩子节点值的完全二叉树。


3.归并排序:将两个或两个以上的有序表组合长一个新的有序表。


4.快速排序:冒泡排序的升级,通过一次排序将序列分成两个部分,其中一个部分的关键字均比另一部分关键字小,再用此方法分别对两部分快速排序,最终整个序列有序。


以上是关于编程-链表之希尔排序堆排序归并排序快速排序的主要内容,如果未能解决你的问题,请参考以下文章

常见排序算法的实现(归并排序快速排序堆排序选择排序插入排序希尔排序)

冒泡排序,快速排序,归并排序,插入排序,希尔排序,堆排序,计数排序,桶排序,基数排序

Python八大算法的实现,插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序。

排序算法整理:冒泡排序堆排序插入排序归并操作快速排序希尔排序选择排序

JavaScript 数据结构与算法之美 - 归并排序快速排序希尔排序堆排序

七种基本排序算法(希尔排序,直接插入排序,冒泡排序,快速排序,简单选择排序,归并排序,堆排序)