Loading

随笔分类 -  数据结构&算法

摘要:所谓数组,是有序的元素序列。 [1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式 阅读全文
posted @ 2018-12-10 20:37 xpang0 阅读(1302) 评论(0) 推荐(0)
摘要:分而治之概念 所谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解。 步骤如下: 分而治之案例 本案例是算法图解上的一个案例。现在你要分割一块土地,从中找出最大的正方形,找出的正方形可以全部分割该块 阅读全文
posted @ 2018-08-02 11:20 xpang0 阅读(828) 评论(0) 推荐(0)
摘要:计算机内存原理 要说递归和栈的问题,首先就要说下计算机内存的基本原理。简单理解计算机内存原理可以将一台电脑看作超市的存包柜,每个柜子都有柜号(即计算机中的地址,如0x000000f)。当需要将数据存储到计算机中时,计算机会提供一个地址。 栈 其实算法图解这本书顺序是先写递归再写栈,我认为这样的顺序不 阅读全文
posted @ 2018-08-01 21:55 xpang0 阅读(1586) 评论(0) 推荐(2)
摘要:二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表。二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x 假设如上 阅读全文
posted @ 2018-07-31 15:23 xpang0 阅读(488) 评论(0) 推荐(0)
摘要:快排概念 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序个项目要(大O符号)次比较。在最坏状况下则需要次比较,但这种状况并不常见。事实上,快速排序通常明显比其他算法更快,因为它的内部循环 阅读全文
posted @ 2017-12-13 15:33 xpang0 阅读(1365) 评论(1) 推荐(0)
摘要:优先队列(堆)的定义 堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问 阅读全文
posted @ 2017-12-07 21:49 xpang0 阅读(8445) 评论(0) 推荐(0)
摘要:哈希表(散列)的定义 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 哈希表的特点是采用以常数平均时间执行插入、删 阅读全文
posted @ 2017-11-29 14:12 xpang0 阅读(3563) 评论(0) 推荐(0)
摘要:AVL树的定义 在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G. M. Adels 阅读全文
posted @ 2017-11-27 21:21 xpang0 阅读(734) 评论(0) 推荐(0)
摘要:二叉查找树定义 二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 二叉查找树相比于其他数据结构的优势在于查找、插入的时 阅读全文
posted @ 2017-11-26 22:56 xpang0 阅读(599) 评论(0) 推荐(0)
摘要:希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。 假设有一个很小的数据在一个已按升序排好序的数组的末 阅读全文
posted @ 2017-10-16 22:23 xpang0 阅读(313) 评论(0) 推荐(0)
摘要:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由 阅读全文
posted @ 2017-09-18 16:04 xpang0 阅读(1208) 评论(0) 推荐(0)
摘要:在计算机科学中,动态数组,可扩展数组,可调整数组,动态表,可变数组或数组列表是一种随机存取可变大小列表数据结构,允许添加或删除元素。它提供许多现代主流编程语言的标准库。动态数组克服了静态数组的限制,静态数组具有需要在分配时指定的固定容量。 动态数组与动态分配的数组不同,数组是数组分配时大小固定的数组 阅读全文
posted @ 2017-09-11 11:04 xpang0 阅读(13223) 评论(0) 推荐(0)
摘要:插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素 阅读全文
posted @ 2017-03-17 15:17 xpang0 阅读(279) 评论(0) 推荐(0)
摘要:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某 阅读全文
posted @ 2017-03-17 14:25 xpang0 阅读(408) 评论(0) 推荐(0)
摘要:冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮 阅读全文
posted @ 2017-03-17 14:03 xpang0 阅读(323) 评论(0) 推荐(0)