文档:排序算法.mindmap
链接:http://note.youdao.com/noteshare?id=61a9aea13f2402182c678be506624f38&sub=38C63D3273A34B1784A2A123D286D9A8
菜鸟教程:https://www.runoob.com/w3cnote/ten-sorting-algorithm.html
直接插入排序 :
每次将带排序的数据插入到排序好的队列中,直到完成全部排序。从数组0开始。
Shell 排序:
选择一系列增量 {d1 = arr.length / 2, d2 = d1 / 2,….} ,每隔d1 的数据进行抽样排序,然后缩小 d 来直至排好序。
直接选择排序:
每次选择一个最小的元素放到排好序的数组中,直到排好序。从小到大排序,从后向前找最小,插到前面。
堆排序:
区分大顶堆与小顶堆。首先建堆,输出堆顶元素,然后将堆最后一个元素放到堆顶元素上,重新建堆,重复过程直至堆为空,整个输出为排序顺序。主要难的是建堆过程。
冒泡排序:
相邻元素两两比较,反序则交换,每遍历一遍数组得到一个最值,所以遍历 n 遍数组得到结果。
快速排序:
正常将第一个元素设为基准值,从数组头与尾开始,将大于基准的放到右边,小于基准值的放到左边,然后对小于部分再进行快速排序,直到排序完成。
归并排序:
正常指二路归并排序,两两比较之后,将比较好的两组数据(4个)进行比较得到正确排序,直到完成排序。
基数排序:
常见的是按照数字的位数进行分组,进行排序。