算法
寂寂寂寂寂蝶丶
这个作者很懒,什么都没留下…
展开
-
严格弱排序
严格弱排序:如果x<y为true,那么!(y<x)为true,可以理解为俩个数据正序逆序传入比较函数中,得到的结果需要一致。如果需要给map自定义key,那么key要支持operator<,并且operator<是严格弱排序的,如果不是严格弱排序,结果是未定义的(可能死循环,可能值被覆盖,windows和linux各种编译器版本之间也不一致)struct SKey{ SKey(int a, int b, int c) :m_a(a), m_b(b), m_c(c)原创 2021-04-17 18:14:22 · 663 阅读 · 0 评论 -
快速排序——生成n个不重复的随机数并快速排序(C++)
希尔排序相当于直接插入排序的升级,它们同属于插入排序类堆排序相当于简单选择排序的升级,它们同属于选择排序类快速排序相当于冒泡排序的升级,它们都属于交换排序类快速排序的基本思想是:通过一趟排序将待排记录分割成独立的俩部分,其中一部分记录的关键字比另一部分记录的关键字小,则可分别对这俩部分记录继续进行排序,以达到整个序列有序的目的,快速排序的时间性能取决于快速排序递归的深度,快速排序需要选定枢轴...原创 2019-03-14 18:11:43 · 2468 阅读 · 2 评论 -
快速排序
快速排序的优化、复杂度以及使用情况#include <stdio.h>#include <iostream>#include <vector>using namespace std;#if 0快速排序是最慢的冒泡排序的升级 他们都属于交换排序类即它是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关...原创 2018-04-10 10:31:15 · 171 阅读 · 0 评论 -
冒泡排序的优化及时间复杂度分析
冒泡排序的优化及时间复杂度分析#include <stdio.h>#include <iostream>#include <vector>using namespace std;void BubbleSort1(vector<int> a){ for (int i = 0; i < a.size() - 1; i++)...原创 2018-04-09 21:24:53 · 1337 阅读 · 0 评论 -
归并排序的递归实现以及复杂度分析
归并排序的递归实现以及复杂度分析#include "stdafx.h"#include <iostream>using namespace std;#define MAX 9#if 0时间复杂度分析:待排序列中的记录都需要扫描一遍,要耗费O[n]时间递归深度也就是完全二叉树深度可知,整个归并排序要进行log2^n次所以 总的时间复杂度为O[nlogn]空...原创 2018-09-10 20:40:35 · 492 阅读 · 0 评论 -
稳定排序和不稳定排序
转载自:https://www.cnblogs.com/ella-ella/p/3775833.html稳定排序和不稳定排序的区别: 通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同,则称之为稳定排序,在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前则为稳定排序,否则为不稳定排序。 ...转载 2019-07-01 14:30:35 · 2059 阅读 · 0 评论 -
快速排序、归并排序、堆排序的实现原理以及适用场景
之前两篇关于排序算法的综述以及平方阶复杂度的3种具体类型的排序算法,这一篇将具体介绍其中平均时间复杂度在平方阶O(nlog2n)的三个排序算法,以及各种算法的代码实现(亲测正确)。快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 O(n...转载 2019-09-22 16:28:55 · 3859 阅读 · 0 评论 -
各个算法的时间复杂度、空间复杂度对比
原创 2019-09-22 16:32:05 · 257 阅读 · 0 评论