随笔分类 - 结构与算法
摘要:图简介:图是一种与树有些相像的数据结构,实际上,从数学意义上讲,树是图的一种。之前的数据结构都有一个框架,这个框架是由相应的算法规定的。例如,二叉树是那样一个形状,就是因为那样的形状使它容易搜索数据和插入新数据。树的边表示了从一个节点到另一个节点的快捷方式。另一方面,图通常有一个固定的形状,这是由物
阅读全文
摘要:堆是一种树,由它实现的优先级队列的插入和删除的时间复杂度都是O(logN)。而有序数组尽管删除最大数据项的时间复杂度为O(1),但是插入需要O(N)时间。当速度非常重要,且有很多插入操作时,可以选择堆来实现优先级队列。 ps:这里的“堆”是指一种特殊的二叉树,不要与java和C++等编程语言里的“堆
阅读全文
摘要:为什么要用树? 在有序数组中用二分查找法查找数据项很快,查找数据的时间为O(logN),但是插入数据项很慢,平均来讲要移动数组中一半的数据项。而在链表中插入和删除操作很快,但是查找必须从头开始,平均需要访问N/2个数据项。就这样,树产生了,既能像链表那样快速的插入和删除,又能像有序数组那样快速查找。
阅读全文
摘要:(一) 归并排序的运行时间为O(N*logN),一个缺点是他需要在存储器中有另一个大小等于被排序的数据项数目的空间。 归并算法的中心是归并两个已经有序的数组。 结果: 方法体有三个while循环,第一个while循环沿着arrayA和arrayB走,比较它们的数据项,并且复制较小的数到array。第
阅读全文
摘要:(一) 栈,后进先出,只允许访问一个数据项:即最后插入的数据项。栈操作: push入栈:第一步指针上移一个单位,第二步将数据插入到这个存储单元; pop出栈:第一步移除指针指向的数据项,第二步指针下移一个单位,指向新的栈顶元素; peek查看:不操作元素,只是查看栈顶元素的值; 结果: 上面的实现是
阅读全文
摘要:最近在读java数据结构与算法,很老的一本书了,正在学习第三章简单排序,将所得记录下来。 (一)冒泡排序 这种排序最简单也最容易理解,最基本的规则:1,从第一个位置开始,比较与下个位置的数据大小;2,如果第二个位置大,则交换位置;3,向右移动一个位置,重复第一个步骤。 这样进行到最后,虽然没有全部排
阅读全文

浙公网安备 33010602011771号