数据结构
Zhongyi_Li
这个作者很懒,什么都没留下…
展开
-
各种排序方法的比较
1.从时间复杂度比较从时间复杂度角度考虑,直接插入排序、冒泡排序、直接选择排序是三种简单的排序方法,时间复杂度均为O(n^2),而快速排序。堆排序、二路归并排序的时间复杂度都为O(nlog2n),希尔排序的时间复杂度介于这两者之间。若从最好情况的时间复杂度考虑,则直接插入排序和冒牌排序的时间复杂度最好为O(n),其他排序最好情况的时间复杂度同平均情况相同。若从最坏情况的时间复杂度考虑,则快速排转载 2012-10-11 15:39:27 · 2090 阅读 · 0 评论 -
如何将一个算数表达式转化为后缀式
比如a+b*(c+d/e)怎么转化为后缀表达式就成了abcde/+*+?1:d/e -> de/2: c + de/ -> cde/+3: b * (cde/+) -> bcde/+*4: a + bcde/+* -> abcde/+*+其实就一个原则:先输出符号左边的, 然后输出符号右边的, 最后输出符号。大家可以试试a+b*(c-d)-e/f。原创 2012-10-11 20:29:42 · 1262 阅读 · 0 评论 -
看图理解单链表的反转
如何把一个单链表进行反转?方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。方法2:使用三个指针遍历单链表,逐个链接点进行反转。方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。 方法1:浪费空间。 方法2:使用p和q连个指针配合工作,使得两个节点间的指向反向,同时用r记录转载 2012-10-14 18:16:16 · 536 阅读 · 0 评论 -
二分查找算法
(1)二分查找(Binary Search),也就折半查找,其查找过程是:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。(2)折半查找过程是以处于区间中间位置记录的关键字与给定值比较,若相等,则查找成功,如不相等,则缩小范围,直到新的区间的中间记录的关键字等于给定值或者查找区间的大小小于零时(表示查找不成功)为止。(3)java实现的代码如下:publi原创 2012-10-16 21:50:37 · 576 阅读 · 0 评论 -
判断两个单链表是否相交
转载地址:http://blog.sina.com.cn/s/blog_667d105501013ma9.html一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序转载 2012-11-08 21:26:25 · 585 阅读 · 0 评论