数据结构与算法
数据结构的定义: 我们怎么把现实中大量而复杂的问题,进行抽象建模(model),以特定的数据类型和特定的存储结构把它们存储到计算机中,从而可以实现某些操作,比如查找和排序,实现这些操作的步骤就称之为算法,算法就是对特定的数据类型进行某些操作的过程,从而达到某种目的。
大数据私房菜
这个作者很懒,什么都没留下…
展开
-
插入排序
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:步骤1: 从第一个元素开始,该元素可以认为已经被排序; 步骤2: 取出下一个元素...原创 2020-05-27 22:08:38 · 140 阅读 · 0 评论 -
选择排序算法
选择排序的基本思想:比较+交换在待排序的一组数据中,选出最小(最大)的一个数与第一个位置的数交换,然后在剩下的数中,再找最小(最大)的数与第二个位置的数交换位置,依次类推,直到第N-1个元素与第N个元素交换位置,选择排序结束。package com.wedoctor.sort;import java.util.Arrays;public class XuanzeSort { public void selectSort(int[] nums){ //...原创 2020-05-27 16:46:44 · 199 阅读 · 0 评论 -
java基础 冒泡排序
①基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。②算法描述:比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。package com.wedoctor.sort;import java.util.Arrays;public class BubbleSort { public stat原创 2020-05-27 15:17:39 · 161 阅读 · 0 评论 -
详解布隆过滤器的原理、使用场景和注意事项
转自:https://www.jianshu.com/p/2104d11ee0a2在进入正文之前,之前看到的有句话我觉得说得很好:Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and转载 2020-05-26 20:03:53 · 716 阅读 · 0 评论 -
AVL树(平衡二叉树)与红黑树(RBTree)
1. AVL树一棵AVL树或者是空树,或者是具有下列性质的二叉查找树——它的左子树和右子树都是AVL树,且左子树和右子树的高度之差的绝对值不超过12.红黑树红黑树是一种二叉树,同时它还满足下列5个特性:每个结点是黑色或者红色。 根结点是黑色。 每个叶子结点(NIL)是黑色。 [注意:这里叶子结点,是指为空(NIL或NULL)的叶子结点!] 如果一个结点是红色的,则它的子结点必须是黑色的。 每个结点到叶子结点NIL所经过的黑色结点的个数一样的。[确保没有一条路径会比其他路径长.原创 2020-05-25 20:26:57 · 340 阅读 · 0 评论 -
二分查找
二分查找也叫折半查找,是一种基本的查找算法,这种查找方法需要待查的表满足两个条件1.有序2.可以根据索引查找3.有界算法的基本思想是:将查找表中间位置数据元素的关键字与给定关键字比较,如果相等则查找成功;否则利用中间元素将表一分为二,如果中间关键字大于给定关键字,则在前一子表中进行折半查找,否则在后一子表中进行折半查找。重复以上过程直到找到满足条件的元素,则查找成功;或直到子表为空为止,此时查找不成功。package com.wedoctor;public class原创 2020-05-24 22:19:22 · 148 阅读 · 0 评论 -
二叉树概念及其遍历
结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。1.树树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根(Root)的结点;2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、......、Tn,其中每一个集合本身又是一棵树,并且称为根的子树。此外,树的定义还需要强调以下两点:1)n>0时根结点是唯一的,不可能存在多个根结点,数据结构中的树只能有一个根结点。2)m>0原创 2020-05-17 23:14:51 · 698 阅读 · 0 评论 -
一个HashMap跟面试官扯了半个小时
https://angela.blog.csdn.net/article/details/104889549转载 2020-05-17 13:05:08 · 151 阅读 · 0 评论 -
算法的时间复杂度分析
算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。1.时间复杂度时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时...原创 2020-05-13 17:21:30 · 10337 阅读 · 0 评论