一. 插入排序
#直接插入排序:
每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
有序序列(初始为:最左端第一个元素) | 待排序序列
#折半插入排序:
#希尔排序:
【1】选取合适的增量increment,一般为 d1=n/2,d2 = n/2」+ 1
d3= n/3』+ 1
【2】所有距离为increment的元素为同一个子序列,共有increment个字序列;
【3】各个字序列中分别进行直接插入排序;
【4】d变化,重复【3】
二. 交换排序
#冒泡排序:
从一端开始,对相邻元素进行两两比较,顺序相反进行比较:
从左端:每一趟,最大元素浮到顶端(右端)
从右端:每一趟,最小元素浮到顶端(左端)
#快速排序:
【1】从带排序序列中选取一个「基准值」;
【2】通过一轮的排序将序列分割成独立的两部分,其中一部分序列的关键字均比另一部分关键字小;
【3】继续对长度较短的序列(子序列)进行同样的分割,最后到达整体有序
在排序过程中,由于已经分开的两部分的元素不需要进行比较,故减少了比较次数,降低了排序时间。
三. 选择排序
#简单选择排序:
【1】找到数组中最小的那个元素
【2】将最小的这个元素和数组中第一个元素交换位置
【3】在剩下的元素中找到最小的的元素,与数组第二个元素交换位置
重复以上步骤,即可以得到有序数组。
#堆排序:
【1】构造初始堆;大根堆,或小根堆
【2】将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大元素。如此反复进行交换、重建、交换。
https://blog.csdn.net/u013384984/article/details/79496052
四. 归并排序:分而治之
五. 基数排序:从个位数开始,依次进行排序
六. 外部排序:多路归并排序