
数据结构与算法
文章平均质量分 60
Doooer
这个作者很懒,什么都没留下…
展开
-
最大堆、最小堆定义及其C++代码实现
很棒的资料https://blog.youkuaiyun.com/guoweimelon/article/details/50904346定义堆首先必须是一棵完全二叉树最大堆:完全二叉树,父节点的值不小于子节点的值最小堆:完全二叉树,父节点的值不大于子节点的值用数组存储上图所示的最大堆对于下标为i(1≤i≤n)i (1 \leq i \leq n)i(1≤i≤n)的节点:父节点:i/2i/2i...原创 2018-11-06 11:44:28 · 2722 阅读 · 0 评论 -
查找
顺序查找法逐个进行比较。时间复杂度O(n)O(n)O(n)。二分查找使用的前提是:数据连续存储且有序。时间复杂度O(logn)O(logn)O(logn)。https://www.nowcoder.com/practice/28d5a9b7fc0b4a078c9a6d59830fb9b9?tpId=49&&tqId=29278&rp=1&ru=/activi...原创 2019-01-10 14:13:03 · 227 阅读 · 0 评论 -
各种排序算法及其C++代码实现
概念一:排序算法是否是稳定的给定序列{3,15,8,8,6,9}若排序后得到{3,6,8,8,9,15}, 则该排序算法是不稳定的,原本后面的8(加粗)现在位于前面了。概念二: 内部排序、外部排序内部排序是指将待排序的数据存放在内存中进行排序的过程。外部排序是指待排序的数据很多,以致内存一次不能容纳所有数据,在排序过程中需要对外存进行访问的排序过程。概念三:评价标准排序过程中最基本的...原创 2019-01-08 20:29:27 · 2957 阅读 · 0 评论 -
二叉搜索树和平衡二叉树
二叉搜索树定义:对任意节点而言,其左子树(如果存在)所有的节点值均小于该节点的值,其右子树(如果存在)所有的节点值均大于该节点的值。特点:中序遍历二叉搜索树得到的结果递增。查找插入需要明确的一点是:插入的新节点一定成为叶子节点。引入一个prev指针变量。删除这里节点的删除分为三种情况:1) 该节点没有子树2)该节点只有一颗子树3)该节点有两颗子树,有两种解决办法:合...原创 2019-01-09 11:20:03 · 470 阅读 · 0 评论 -
桶排序
n个数,m个桶,时间复杂度是O(n+m∗nmlog(nm))=O(n+n(logn−logm))O(n+m*\frac{n}{m}log(\frac{n}{m}))=O(n+n(logn-logm))O(n+m∗mnlog(mn))=O(n+n(logn−logm)),最好的时间复杂度是O(n)O(n)O(n)。桶排序是牺牲空间换时间。题目:给你几万名员工的年龄数据,让你对这些年龄从小到大...原创 2019-01-09 16:45:56 · 230 阅读 · 0 评论 -
用一个栈实现另一个栈的排序
参考 https://www.cnblogs.com/xiyuan2016/p/6830821.html题目:在一个栈中元素的类型为整型,现在想将该栈从栈顶到栈底按从大到小的顺序排序,只许申请一个栈,除此之外,可以申请其他变量,但是不能申请额外的数据结构 。思路:待排序的栈stack, 辅助栈help。 Note: 为使得 stack 栈顶到栈底元素降序,help保持 栈顶到栈底元素升序,...原创 2019-06-14 11:53:37 · 439 阅读 · 0 评论 -
求不相邻的最大子数组和
参考: https://blog.youkuaiyun.com/realxie/article/details/8063885题目:给定一个数组A,求出一些数,使得每个元素在数组A里两两不相邻,并且和最大。选择第i个元素,那么第i-1个元素一定不能选不选择第i个元素,那么第二个元素既可以选,也可以不选#include<bits/stdc++.h>using namespace st...原创 2019-06-20 21:59:48 · 1252 阅读 · 0 评论 -
八皇后
参考链接:https://www.jianshu.com/p/65c8c60b83b8八皇后问题的主要思想是使用回溯法。我们已经知道,八个皇后分别在每一行, 而所在的列是需要我们用递归来进行寻找的。#include<bits/stdc++.h>using namespace std;bool isOk(vector<vector<int>>& f...原创 2019-06-29 23:18:48 · 383 阅读 · 0 评论 -
非均匀分布的采样
#include<bits/stdc++.h>using namespace std;int main(){ default_random_engine e(time(0)); uniform_real_distribution<float> u(0,1); float sum_weights[5]={0.1, 0.5, 0.7, 1.2, 1.5}; ...原创 2019-07-06 22:17:57 · 3028 阅读 · 0 评论