三大查找、八大排序是数据结构中非常重要的知识点,也是笔试面试必考的知识点。本系列对此做一个总结,供自己时常复习使用。也希望能给对此不甚明了的同学一点帮助。
排序算法分为内部排序和外部排序。内部排序是指将所有的元素调到内存中进行排序,其排序效率用比较次数来衡量。而外部排序是指大文件的排序,即待排序的记录存储在外部存储器上,待排序的文件无法一次性装入内存,因而,需要在内存和外部存储器中多次进行数据交换,外部排序的过程主要依据对数据的内外存交换和“内部归并”两者相结合。
外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序,然后,对已经排序的子文件进行归并排序。
RAM 的访问速度大概是磁盘的 25 万倍,如果数据集不是特别大,均为内部排序。
内部排序分为以下八种:
1)插入排序(包括 直接插入排序 和 希尔排序)
2)选择排序(包括 简单选择排序 和 堆排序)
3)交换排序(包括 冒泡排序 和快速排序)
4)归并排序
5)基数排序
各种算法的性能比较如下图所示:
插入排序见下一链接: