#数据结构与算法

洛谷 P1972 [SDOI2009]HH的项链【莫队算法学习】

无HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答……因为项链实在是太长...

hihoCoder #1015 : KMP算法【KMP裸题,板子】

#1015:KMP算法时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你...

排序算法之奇偶排序 JAVA奇偶排序算法

 奇偶排序法的思路是在数组中重复两趟扫描。第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1,3,5……)。如果它们的关键字的值次序颠倒,就交换它们。第二趟扫描对所有的偶数数据项进行同样的操作(j=2,4,6……)。重复进行这样两趟的...
代码星球 代码星球·2020-05-24

排序算法之快速排序 JAVA快速排序算法

publicstaticvoidquickSort(int[]arr,intlow,intheight){intl=low,h=height;if(low<height){inttemp=arr[low];while(low<height){while(low<height&&temp...
代码星球 代码星球·2020-05-24

趣味算法——青蛙过河(JAVA)

   青蛙过河是一个非常有趣的智力游戏,其大意如下:一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动。在移动过程中,青蛙可以向前面的空位中移动,不可以一次跳过两个位置,但是可以跳过对方一只青蛙进入到前面的一个空位。问两队青蛙该如何移...

前端学算法之算法复杂度

  本文将详细介绍算法复杂度 大O表示法  大O表示法是描述算法的性能和复杂程度。分析算法时,时常遇到以下几类函数符号名称O(1)常数的O(log(n))对数的O((log(n))c)对数多项式的O(n)线性的O(n2)二次的O(nc)多项式的O(cn)指数的  如何衡量算法的效率?通常是用资源,例如CPU(...
代码星球 代码星球·2020-05-24

前端学算法之算法模式

  本文将详细介绍算法模式,包括递归、动态规划和贪心算法 递归  递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题。通常涉及函数调用自身  能够像下面这样直接调用自身的方法或函数,是递归函数:varrecursiveFunction=function(someParam){recursi...
代码星球 代码星球·2020-05-24

前端学算法之搜索算法

  本文将详细介绍搜索算法的实现 顺序搜索  顺序或线性搜索是最基本的搜索算法。它的机制是,将每一个数据结构中的元素和我们要找的元素做比较。顺序搜索是最低效的一种搜索算法  以下是其实现:this.sequentialSearch=function(item){for(vari=0;i<array.le...
代码星球 代码星球·2020-05-24

前端学算法之排序算法

  假设有一个没有任何排列顺序的电话号码表(或号码簿)。当需要添加联络人和电话时,只能将其写在下一个空位上。假定联系人列表上有很多人,某天,要找某个联系人及其电话号码。但是由于联系人列表没有按照任何顺序来组织,只能逐个检查,直到找到那个想要的联系人为止。想象一下要在黄页上搜寻一个联系人,但是那本黄页没有进行任何组织,那...
代码星球 代码星球·2020-05-24

前端学数据结构之图

  本文将详细介绍图这种数据结构,包含不少图的巧妙运用 数据结构  图是网络结构的抽象模型。图是一组由边连接的节点(或顶点)。图是重要的,因为任何二元关系都可以用图来表示  任何社交网络,例如Facebook、Twitter和Googleplus,都可以用图来表示。还可以使用图来表示道路、航班以及通信状态,如...
代码星球 代码星球·2020-05-24

前端学数据结构之树

  前面介绍过一种非顺序数据结构是散列表,本文将详细介绍另一种非顺序数据结构——树,它对于存储需要快速查找的数据非常有用 数据结构  树是一种分层数据的抽象模型。现实生活中最常见的树的例子是家谱,或是公司的组织架构图  一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点(除...
代码星球 代码星球·2020-05-24

前端学数据结构之字典和散列表

  集合、字典和散列表可以存储不重复的值。在集合中,我们感兴趣的是每个值本身,并把它当作主要元素。在字典中,我们用[键,值]的形式来存储数据。在散列表中也是一样(也是以[键,值]对的形式来存储数据)。但是两种数据结构的实现方式略有不同,本文将详细介绍字典和散列表这两种数据结构 字典  集合表示一组互不相同的元...

前端学数据结构之集合

  本文将详细介绍集合,这是一种不允许值重复的顺序数据结构 数据结构  集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中。  在深入学习集合的计算机科学实现之前,我们先看看它的数学概念。在数学中,集合是一组不同的对象(的集)。比如说,一...
代码星球 代码星球·2020-05-24

前端学数据结构之链表

  本文将介绍如何实现和使用链表这种动态的数据结构 数据结构  要存储多个元素,数组(或列表)可能是最常用的数据结构。每种语言都实现了数组。这种数据结构非常方便,提供了一个便利的[]语法来访问它的元素。然而,这种数据结构有一个缺点:(在大多数语言中)数组的大小是固定的,从数组的起点或中间插入或移除项的成本很高...
代码星球 代码星球·2020-05-24

前端学数据结构之队列

  队列和栈非常类似,但是使用了不同的原则,而非后进先出。本文将详细介绍队列的JS实现 数据结构  队列是遵循FIFO(FirstInFirstOut,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾  在现实中,最常见的队列的例子就是排...
代码星球 代码星球·2020-05-24
首页上一页...7778798081...下一页尾页