返回「计算机、信息技术与工程」
排序复习
本文目录 3 个章节
排序复习
# 排序复习
创建时间:2020/2/5 0:29
C++STL Sort实现
- 数据量大时采用QuickSort快排算法,分段归并排序。
- 一旦分段后的数据量小于某个门槛(16),为避免QuickSort快排的递归调用带来过大的额外负荷,就改用Insertion Sort插入排序。
- 如果递归层次过深,还会改用HeapSort堆排序。
https://blog.csdn.net/qq_35440678/article/details/80147601
stable_sort
会对一段元素进行排序并保证 维持相等元素的原始顺序 sort是快速排序实现,因此是不稳定的; stable_sort是归并排序实现,因此是稳定的。
string str1 = "test";
string str2 = "test";
- sort是快速排序实现,因此是不稳定的;stable_sort是归并排序实现,因此是稳定的。
- 如果提供了比较函数,sort不要求比较函数的参数被限定为const,而stable_sort则要求参数被限定为const,否则编译不能通过。
快速排序
给基准数据找其正确索引位置的过程
- 先从数列中取出一个数作为基准数
- 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边
- 再对左右区间重复第二步,直到各区间只有一个数
挖坑填数过程:
- i =L; j = R; 将基准数挖出形成第一个坑a[i]。
- j–由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。
- i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。
- 再重复执行2,3二步,直到i==j,将基准数填入a[i]中。
string str1 = "test";
string str2 = "test";