
数据结构与算法
带你装逼带你飞的程序猿
android开发
展开
-
并查集--QuickFind实现
1 并查集的意义判断连通性问题初始化每个元素都是不同集合判断两个点是否连通,查看是否在同一个集合中即可2 QuickFindUF实现顾名思义,查询非常快,用数组来存储,每个索引对应的是集合的编号/** * @author Created by qiyei2015 on 2019/12/11. * @version: 1.0 * @email: 1273482124@qq.com...原创 2019-12-22 17:05:52 · 557 阅读 · 0 评论 -
数据结构--线段树
因为出差,先占个位,后续补上原创 2018-12-09 16:27:16 · 421 阅读 · 0 评论 -
java实现自己的动态数组
算法占位原创 2019-01-23 16:58:24 · 317 阅读 · 0 评论 -
算法3
先占个坑原创 2019-03-31 10:00:07 · 189 阅读 · 0 评论 -
对角线打印二维数组问题
1 前言最近在网上看到这样一道面试题:二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: 4*4二维数组 { 1 2 3 4 } { 5 6 7 8 } { 9 10 11 12 } {13 14 15 16 } 打印顺序 4 3 8 2 7 12 1 6 11 16 5 10 15 9 14 13 网上已经有各种解法,也有现...原创 2018-05-13 01:14:16 · 9092 阅读 · 2 评论 -
索引堆简单介绍
1 索引堆基本概念堆的基本概念不用多种介绍了,但是对于堆来说,有时堆结点存储的数据结构交换时间及空间比较大,或者结点存储的是比较复杂的数据结构。这个时候,我们可以采用索引堆这种数据结构来解决索引堆:在堆的基础上用一个索引数组来存储数据元素的位置,即索引堆里面包含两个数组,如下: 建堆之前: 建堆之后 在这个图中,有两个数组,data[]存储真实的数据元素,index[]存...原创 2018-05-05 16:55:45 · 1826 阅读 · 1 评论 -
优先队列或堆及堆排序介绍
1 堆的基本概念堆也叫优先队列,堆是一种特殊的完全二叉树数据结构,堆分为两种,最大堆,最小堆。 最大堆:根节点大于左右两个子节点的完全二叉树 最小堆:根节点小于左右两个子节点的完全二叉树 堆可以用数组来存储,a[i]处存根节点,a[2*i] a[2*i + 1]分别存左子树的根节点,右子树的根节点。i从1开始所以对于一个堆,结点i,其父结点为a[i/2],左子节点a[2*i],右子节...原创 2018-05-01 12:01:03 · 583 阅读 · 0 评论 -
高级排序算法
1 前言对于基本排序算法来说,时间复杂度一般都是O(n^2)。而高级排序算法的时间复杂度一般都是O(nlogn)。高级排序算法主要针对基本排序算法进行优化。下面介绍几种常见的高级排序算法,希尔排序,归并排序,快速排序,堆排序2 希尔排序希尔排序是插入排序的一个改进,它主要是用一个递增序列来使数组进行一个分组,然后对每组进行一个插入排序 例如递增序列 h = 3*h + 1;那么 ...原创 2018-04-05 14:10:52 · 1259 阅读 · 0 评论 -
基本排序算法解析
1 前言排序再算法中是一个很重要又很基础的工作,在对数据的处理过程中,排序往往是第一步。排序算法很多,评价一个排序算法好不好也有很多标准。例如时间复杂度,空间复杂度,稳定性等。今天先来介绍三种比较基础的排序算法,它也是很多高级排序算法的基础。他们是选择排序,冒泡排序,插入排序。选择排序,冒泡排序,插入排序的时间复杂度都是O(n^2),空间复杂度都是O(1)2 选择排序选择排序就是每...原创 2018-04-01 11:14:11 · 3157 阅读 · 0 评论 -
栈和队列的java链表实现
1 前言栈和队列是我们在开发中常用的两种数据接口,java中也有相关的定义的实体类java.util.Stack,java.util.Queue。不过这里不想介绍java官方的定义。想自己用链表来实现这两个数据结构。2 栈的链表实现栈是一种先进后出的数据结构,这个一般对外的接口有:入栈,出栈,判断是否为null,栈大小等接口。实现的代码如下:/** * @author Cre...原创 2018-03-10 14:22:56 · 938 阅读 · 0 评论