
数据结构
yrk0556
yrk0556@foxmail.com联系我
展开
-
十大经典排序算法(动图演示)
十大经典排序算法(动图演示)转载 2020-05-13 22:12:09 · 292 阅读 · 0 评论 -
B树和B+树
B树1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。节点保存值B+树节点只用作索引原创 2020-02-27 10:53:04 · 114 阅读 · 0 评论 -
快速排序的另一种分割函数
public int partition(int[] nums, int l, int r) {//数组索引l到索引r(包含边界) int p=nums[r];//将最右元素做枢纽元素 int idx=l;//双指针法填充 for(int i=l;i<r;i++){ if(nums[i]<p){ ...原创 2020-02-16 15:28:56 · 242 阅读 · 0 评论 -
红黑树与AVL树
一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是红或黑(非红即黑)。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍。红黑树单次的查找、插入、删除的复杂度都是lg(n),这些操作的复杂度都不会恶化;因此,红黑树是一种弱平衡二叉树(由于是弱平衡,可以看到,在相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来...原创 2020-01-20 13:27:02 · 110 阅读 · 0 评论 -
堆排序
堆排序原创 2019-10-02 12:07:59 · 91 阅读 · 0 评论 -
b+树与b树的区别
b+树与b树的区别.原创 2019-09-30 10:43:05 · 591 阅读 · 0 评论 -
最大公约数(Greatest common divisor 和 最小公倍数(least common multiple)
#include<bits/stdc++.h>using namespace std;int gcd(int a,int b){//最大公约数 return b==0?a:gcd(b,a%b);}int lcm(int a,int b){//最小公倍数,最小公倍数等于两数的乘积除最大公约数 return a*b/gcd(a,b);}int main(...原创 2019-03-17 15:39:29 · 825 阅读 · 0 评论 -
快速幂
快速幂例如求35,5的二进制位101,所以5也可以写成22+20,则35=34x31。int fastpow(int base,int n){ int res=1; while(n){ if(n&1)res*=base; base*=base;//维持base的多少次方 n/=2;//继续扫描前一位 } r...原创 2019-03-20 15:42:22 · 164 阅读 · 0 评论 -
leetcode 19 删除链表的倒数第N个节点(快慢指针)
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?我们需要两个指针p1,p2,让p1先走n步,当p1走到终点,...原创 2019-03-14 20:14:24 · 285 阅读 · 0 评论 -
快速排序(填坑法的两种写法以及交换法)
快速排序快速排序有种分割方法。填坑法start指针指向开始,end指针指向结束。以a[start]为基准,目的是把数组从基准分开,左边都是小于等于基准的,右边都是大于基准的。先把基准保存,从左右指针互相填坑,遇到不符合规矩的数交换,所以start左边都是小于基准的,end右边都是大于基准的,这样一步一步缩小[start,end]范围,基准肯定位于start,end中间,最后start==en...原创 2019-03-14 10:45:25 · 2718 阅读 · 0 评论 -
优先队列之自定义比较函数
#include <iostream>#include <vector>#include <unordered_map>#include <queue>#include <string>using namespace std;struct cmp{ /*在左边(也就是队尾),优先级越低 * 默认使用le...原创 2019-02-27 22:32:35 · 6123 阅读 · 0 评论 -
二分法的最简洁写法
返回结果:1、如果目标值存在数组里,返回目标值的索引2、如果目标值不在数组,返回目标值应该插入的位置(插入能够保证数组有序)一def lower_bound(array, first, last, value): # 返回[first, last)内第一个不小于value的值的位置 while first < last: # 搜索区间[first, last)不为空...原创 2019-02-27 22:27:50 · 547 阅读 · 0 评论