努力奔跑中的coder

源代码的github地址:https://github.com/louyuting

排序:
默认
按更新时间
按访问量

【数据结构】有向图

有向图 一. 有向图的相关术语 在有向图中,边是单向的:每条边连接的两个顶点都是一个有序对,它们的邻接性是单向的。我们开发过程中碰到的很多场景都是有向图:比如任务調度的依赖关系,社交网络的任务关系等等都是天然的有向图。 以下概念都是针对有向图的: (1)==有向图==:一幅有向图是由一...

2018-03-19 22:00:26

阅读数:1846

评论数:1

B树、B+树、LSM树以及其典型应用场景

前言动态查找树主要有:二叉查找树、平衡二叉树、红黑树、B树、B+树。前面三种是典型的二叉查找树,查找的时间复杂度是O(log2N)与树的深度有关系,那么降低树的深度也就可以提升查找效率。这时就提出了平衡多路查找树,也就是B树以及B+树。B树和B+树非常典型的场景就是用于关系型数据库的索引(MySQ...

2017-10-12 17:50:52

阅读数:4780

评论数:0

[b.d]--算法题-求含有min函数的栈的实现

带有min函数的栈 1. 空间复杂度是O(n)这种情况没什么好说的,利用一个同等大的辅助栈,如果入栈数据的数据比辅助栈辅助栈栈顶数据小,就更新辅助栈数据,如果大于或则等于辅助栈的栈顶,就直接吧辅助栈的栈顶复制一次再入辅助栈就行了。这种方法比较简单,没什么说的,也不给出实现了,百度一大堆。2. 空间...

2017-02-27 15:40:46

阅读数:341

评论数:0

[b.d]--算法题-求万级别的电话号码的排序

先给出问题的描述以及解决思路:/** * Created by louyuting on 2017/2/24. * * Question: 对某公司员工的所有电话号码进行排序, 数据量级别明显是万级别的. * * category: 大数据量进行排序 * * solution: (1...

2017-02-27 13:41:30

阅读数:1015

评论数:0

[m.t]--算法-求数组中最接近0的子序列

Question:求一个无序数组中最近接0的子序列。 1. 暴力算法:求最接近于0的子数组序列,那么数组中的任何一个元素都有可能成为这个子数组的起点,那么我们可以使用双重for循环求出以每个元素为开头的最接近0的子数组。其实就是两轮for循环,具体的算法就不给出了。2. 优化算法:优

2017-02-17 12:20:52

阅读数:934

评论数:0

[排序算法]--桶排序的Java实现

今天在刷leetcode的时候,在41题 First Missing Positive 发现了在排序算法中还有一个桶排序,顺便做个总结。 桶排序关于桶排序先做几点说明: 1)桶排序是稳定的; 2)桶排序是常见排序算法中最快的一种,大多数情况下比快排和归并排序还要快 3)桶排序非常...

2017-02-08 21:09:04

阅读数:4011

评论数:5

[查找算法]--二分查找的Java实现

二分查找算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。 下面给出两种实现方式: 1. ...

2017-02-08 14:57:22

阅读数:1127

评论数:0

冒泡、直接插入、快排、归并排序算法的性能测试

这里我写了一个测试demo,测试前面的冒泡排序、直接插入排序算法、快速排序算法、二路归并排序算法的性能:package leetcode.Algorithm;import java.util.Random;/** * Created by louyuting on 17/2/6. */ pub...

2017-02-06 17:24:35

阅读数:547

评论数:0

[排序算法]--归并排序的Java实现

归并排序(2-路归并):归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。 下面先看一个归并排序过程的示例: 待排序列(14,12,15,13,11,16): 首先用分割的方法,...

2017-02-06 16:14:50

阅读数:4684

评论数:1

[排序算法]--直接插入排序的三种实现(Java)

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0….N-1]: (1)初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1(2)将a[i]并入当前的...

2017-02-06 14:18:43

阅读数:448

评论数:0

[排序算法]--冒泡排序的三种实现(Java)

冒泡排序是非常好理解的,以从小到大排序为例,每一轮排序就找出未排序序列中最大值放在最后。 设数组的长度为N: (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。(2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。(3)...

2017-02-06 12:53:44

阅读数:81433

评论数:12

[排序算法]--快速排序的Java实现

快速排序 所谓快速排序:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,关于基准点的选择方法后面再讲解),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就...

2017-02-05 23:58:51

阅读数:16065

评论数:7

常见排序算法的时间复杂度和空间复杂度对比表

在网上看到一个常用排序算法的时间复杂度和空间复杂度表格,自己整理了一下,如下:

2017-02-05 22:56:24

阅读数:3761

评论数:2

红黑树原理解析以及Java实现

红黑树本文的主要内容: 1、红黑树的基本概念以及最重要的5点规则。 2、红黑树的左旋转、右旋转、重新着色的原理与Java实现; 3、红黑树的增加结点、删除结点过程解析;1.红黑树的基本概念与数据结构表示首先红黑树来个定义: 红黑树定义:红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二...

2017-01-10 15:17:52

阅读数:11005

评论数:5

二叉排序树的java实现

最近在看JDK源码时,发现JDK的J.U.C包下面的很多类都用到了二叉排序树和红黑树,就想着这一块还是考研的时候看了的,顺便就在理论基础上复习加用Java做个实现。 二叉排序树先来说说这个二叉排序树的定义和性质: 定义:二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子...

2017-01-07 15:33:22

阅读数:6572

评论数:0

算法中的亦或--数组中只出现一次的数

算法中的亦或 ^1.亦或的性质 交换律 a^b = b^a 结合律 a^b^c=a^(b^c)=(a^b)^c 0^a=a 0与任何数亦或都是这个数 a^a=0 2.典型应用:2.1 交换两个数a=a^b; b=b^a;(b^a^b=b^b^a=a) a=a^b;((a^b)^a=b)2...

2016-12-28 00:23:43

阅读数:1049

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭