Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

数据结构

数据结构与算法是紧密相连的,数据结构的性质将直接影响到算法的效率。

背包

背包是一种不支持删除元素的集合数据类型。

队列

先进先出队列是一种基于先进先出(FIFO)策略的集合类型。

栈是一种基于后进先出(LIFO)策略的集合类型。

链表

链表是一种递归的数据结构,它指向一个 node 节点的引用,或者为 null。

算法

一个程序运行的总时间主要和两点相关:

  1. 执行每条语句的耗时(取决于操作系统、计算机、编程语言)
  2. 执行每条语句的频率(取决于程序本身和输入)

通过以上两点,可以算出程序的总运行时间。

二分查找

在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

二分搜索在情况下的复杂度是对数时间,进行 O(log n) 次比较操作(n在此处是数组的元素数量,O是大O记号,log 是对数)。二分搜索使用常数空间,无论对任何大小的输入数据,算法使用的空间都是一样的。除非输入数据数量很少,否则二分搜索比线性搜索更快,但数组必须事先被排序。尽管特定的、为了快速搜索而设计的数据结构更有效(比如哈希表),二分搜索应用面更广。

二分搜索有许多中变种。比如分散层叠可以提升在多个数组中对同一个数值的搜索。分散层叠有效的解决了计算几何学和其他领域的许多搜索问题。指数搜索将二分搜索拓宽到无边界的列表。二分搜索树和B树数据结构就是基于二分搜索的。

资料来源:维基百科