C++
梦鸢MoYuan
unity开发,求职中,捞我!
展开
-
2路归并排序(考研数据结构)
2路归并排序利用分治思想将列表不断划分成左右两块(后序遍历 左右根),然后对每个各自有序的左右两块合并成一块大的有序块。时间:最好、最坏、平均-O(nlog2n)需要分解为log2层(二叉树的高度),每次合并需要O(n)空间:需要一个和原列表等大的空间 O(n)稳定性:稳定的优点:是一种稳定的,且快速的排序算法。可以扩展为多路归并,然后结合败者树优化。易于支持并行排序缺点:4. 需要过大的辅助空间O(n)5. 需要支持随机访问(链表不适用)/*2路 归并排序使用了分而治之的原创 2020-09-29 22:56:50 · 1016 阅读 · 0 评论 -
堆排序(考研数据结构)
堆排序利用堆了这种数据结构(一种特殊的完全二叉树,根>左右)时间:最好、最坏、平均都为O(nlog2n)空间:O(1)只使用了几个变量稳定性:不稳定,构造堆的适合可能会打乱原有顺序优点:快速,对于任意序列其时间复杂度很稳定。缺点:要求能够随机访问,故只能对顺序表排序。算法思路:先构造出一颗大根堆(由小到大排序)。然后将堆顶元素(此时堆顶元素最大)和堆尾元素交换交换后堆的规模缩小一(也就是将已经排好序的堆尾不再排序)重复2.直到堆的规模为1 此时不再需要排序/*堆排序原创 2020-09-29 00:06:21 · 326 阅读 · 0 评论 -
快速排序算法(考研数据结构)
快速排序算法快速排序算法是一种交换排序,基于冒泡排序的采用了二分思想的优化。最坏情况将会退化为冒泡排序(这取决于基准字选取的方法)。排序思想:将元素划分为以基准字为中心的两块,一块小于它一块大于它(每次划分结束,基准字都会放到最终位置上)继续对以基准字切分出来的两块进行划分-重复1(不包括基准值)当左右两块都只有一个或者0个元素时,退出。排序完成。时间: O(nlog2n), 最坏情况下O(n^2)空间:递归栈的深度O(log2n)。最坏情况深度为n,空间为O(n)稳定性: 不稳定,排原创 2020-09-27 23:46:13 · 512 阅读 · 0 评论 -
C++的匿名函数的基本使用
#include<iostream>using namespace std;int main(){ // 匿名函数 - ->返回值类型 - lambda表达式 auto fun = [](int a)->int{ // 定义匿名函数 并引用 cout << a << endl; return 1原创 2018-04-19 19:25:17 · 5879 阅读 · 0 评论 -
C++快读
常用快读实现https://blog.csdn.net/lbj_0116/article/details/80501922给cin提速https://blog.csdn.net/u013095699/article/details/76790574转载 2018-11-23 19:40:42 · 1890 阅读 · 0 评论 -
C++组合算法
#include<stdio.h>int N = 0;int M = 3;int num[100] = {0};bool visit[100] = {false};int t_num[100] = {0};int count = 0;// n 个球中取m个void dfs(int m, int index, int nn, int mm){ // 如果已经取到...原创 2018-11-23 21:55:42 · 408 阅读 · 0 评论