设散列表有m个存储单元, 散列表函数H(key) = key % p, 则p最好选择 小于等于m的最大素数 具有3个节点的二叉树有 5种 以下排序算法是不稳定排序算法 希尔排序 快速排序 选择排序 堆排序 以下代码的时间复杂度 int foo(int n){ if(n <= 1) return 1; ...
分类:
Web程序 时间:
2020-09-17 23:24:09
阅读次数:
42
稳定性:不稳定排序 1. 过程介绍 快速排序是考察次数最多的排序,无论是在大学专业课的期末考试,还是在公司的面试测试题目中,快速排序都极大的被使用,在实际中快速排序也极大的被使用,如STL中的sort底层就是一个快速排序。 首先在数组中选择一个基准点,然后分别从数组的两端扫描数组,设两个指示标志(l ...
分类:
编程语言 时间:
2020-07-01 16:03:45
阅读次数:
68
稳定性:不稳定排序 1.过程介绍 希尔排序,又名递减增量排序算法,是一种非稳定的更高效的插入排序,在对几乎已经排好序的数据操作时,效率极高,即可以达到线性排序的效率,直接插入排序整体来说是低效的,因为插入排序每次只能将数据移动一位; 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分 ...
分类:
编程语言 时间:
2020-07-01 15:47:54
阅读次数:
57
树的实际应用 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序属于选择排序,其最好、最坏、平均时间复杂度均为 O(nlogn) ,他也是 不稳定排序 1. 堆介绍及最大最小堆 堆是具有以下性质的完全二叉树 每个结点的值都大于或等于其左右孩子结点的值,称为大项堆 每个结点的值都小于等于其 ...
分类:
编程语言 时间:
2020-04-24 20:06:27
阅读次数:
68
稳定性的定义与意义: 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。 如果是不稳定排序,则需要第二次排序,会增加系统开销。 选择排序: 举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏 ...
分类:
编程语言 时间:
2020-04-09 12:59:31
阅读次数:
136
预备知识 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结 ...
分类:
编程语言 时间:
2020-03-28 20:03:13
阅读次数:
88
简单的了解以下快排: 参考的讲解网址:https://blog.csdn.net/nrsc272420199/article/details/82587933 1、稳定性问题 首先大家应该都知道快速排序是一个不稳定排序算法,那么到底什么才是排序的稳定性呢,我认为通俗的讲有两个相同的数A和B,在排序之 ...
分类:
编程语言 时间:
2020-02-15 13:03:27
阅读次数:
79
结构体模板 1 struct STU 2 { 3 string name; //用string可以代替char 4 string num; 5 int s; 6 }; sort是用快速排序实现的,属于不稳定排序,stable_sort是用归并排序实现的,因此是稳定的。从此以后,为了保险起见我打算使用 ...
分类:
编程语言 时间:
2020-02-12 00:16:40
阅读次数:
112
1.选择排序法 每循环一次将最值挑出来放在前面,实践复杂度为O(n^2),不稳定排序,其基本的语法如下: 2.冒泡排序法 每循环一次将最值冒到尾部,时间复杂度为O(n^2),稳定排序,其基本的语法如下: 3.C++STL之sort排序 sort排序可以捆绑结构体一起使用,求出原来的序号和排序后的序号 ...
分类:
编程语言 时间:
2020-02-02 13:36:17
阅读次数:
69
思想 希尔排序(Shell Sort)是基于插入排序的一种 不稳定 排序方法。 1,将整个序列分为h个子序列; 2,第一趟将每个子序列进行插入排序; 3,第二趟将增量缩小,重复2; 4,直至增量为1,就是简单插入排序。 eg: 实现 复杂度 希尔排序最优时间复杂度$O(n)$,最差情况下也突破了平方 ...
分类:
编程语言 时间:
2020-01-01 23:58:45
阅读次数:
147