上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页
摘要: 一、二叉搜索树概览 二叉搜索树(又名二叉查找树、二叉排序树)是一种可提供良好搜寻效率的树形结构,支持动态集合操作,所谓动态集合操作,就是Search、Maximum、Minimum、Insert、Delete等操作,二叉搜索树可以保证这些操作在对数时间内完成。当然,在最坏情况下,即所有节点形成一种链 阅读全文
posted @ 2015-10-20 22:13 bakari 阅读(928) 评论(0) 推荐(0) 编辑
摘要: 一、散列表的概念 本章介绍了散列表(or hash table)的概念、散列函数的设计及哈希冲突的处理。散列表(为了形象描述,我们通常叫槽)从表意上看是一种数据结构,但把它归为算法思想更为贴切。对于大部分的查找问题,使用散列表能达到O(1)的效率。现在很多大公司在面试大数据的题目时,解决方案里绝对少 阅读全文
posted @ 2015-10-16 12:56 bakari 阅读(712) 评论(0) 推荐(0) 编辑
摘要: 题目: 解题思路: 1、暴力法:两个for循环遍历,时间复杂度为O(N^2),会超时。 2、排序法:这里有两种思路: 1)排好序后,利用区间法来计算两个数的和(两个指针分别指向首尾,逐步向中间收缩) 2)排好序后,固定一个元素a[i],在余下的数中查找target - a[i],查找可用二分查找法, 阅读全文
posted @ 2015-10-12 12:09 bakari 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 本章讲述的是基本的数据结构,如栈、队列和链表。这些都是最最基本的数据结构,具体的就不再啰嗦。然后本章也没有什么需要特别注意的点,哦,有一个小节:指针和对象的实现,可以认真看一下,大概就是用其他的实现方式来代替指针和对象的实现,因为有些语言不支持指针和对象数据类型,那在实现这种链式的数据结构就无法表示 阅读全文
posted @ 2015-10-08 17:24 bakari 阅读(1147) 评论(0) 推荐(0) 编辑
摘要: 本篇博文意在对前几章中遗漏的,本人觉得有意思的习题当独拿出来练练手。 1、习题2-4,求逆序对,时间复杂度要求Θ(nlgn) 定义:对于一个有n个不同的数组A, 当i<j时,存在A[i]>A[j],则称对偶(i, j)为A的一个逆序对。 譬如:<2,3,8,6,1>有5个逆序对。 解题思路:归并排序 阅读全文
posted @ 2015-10-05 19:21 bakari 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 本章如果要归结成一个问题的话,可以归结为选择问题,比如要从一堆数中选择最大的数,或最小的数,或第几小/大的数等, 这样的问题看似很简单,似乎没有什么可研究的必要,因为我们已经知道了排序算法,运用排序+索引的方式不就轻松搞定了?但细想,排序所带来的时间复杂度是不是让这个问题无形之中变得糟糕。那算法研究 阅读全文
posted @ 2015-10-02 17:34 bakari 阅读(2387) 评论(0) 推荐(0) 编辑
摘要: 一、线性时间排序算法历史概览 计数排序首先是由 Harold H. Seward 于1954年提出,而且他还提出将计数排序和基数排序进行结合的思想;基数排序是L.J.Comrie于1929年首次在一篇描述卡片穿孔机文档中提出的一种方法,它是从最低有效位开始,对一个有多位数组成的数进行排序的方法;而桶 阅读全文
posted @ 2015-09-29 12:41 bakari 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: 一、快速排序概述 关于快速排序,我之前写过两篇文章,一篇是写VC库中的快排函数,另一篇是写了快排的三种实现方法。现在再一次看算法导论,发现对快速排序又有了些新的认识,总结如下: (1)、快速排序最坏情况下的时间复杂度为O(n^2),虽然最坏情况下性能较差,但快排在实际应用中是最佳选择。原因在于:其平 阅读全文
posted @ 2015-09-26 03:54 bakari 阅读(1687) 评论(0) 推荐(0) 编辑
摘要: 优先队列可以说是堆的一个非常重要的应用,和堆对应,优先队列也分最小优先队列和最大优先队列。 优先队列是一种用来维护由一组元素构成的集合S的数据结构,其中每一个元素都有一个关键字(key),关键字赋予了一个元素的优先级,故名为优先队列。之所以用堆来实现优先队列,我想最大的原因是堆很容易对元素按关键字进 阅读全文
posted @ 2015-09-20 17:16 bakari 阅读(1107) 评论(0) 推荐(0) 编辑
摘要: 现在来看, 堆的含义大概有两种,一种是数据结构,一种是在一些语言中所定义的“垃圾回收机制”,如Java,在书本上的开篇强调了这两者,并强调若非特殊说明,皆把堆看做是一种数据结构。 (二叉)堆的定义: 1)它是一个数组,可以被看成是一棵近似的完全二叉树,树上的每一个节点看做是数组中的每一个元素。 2) 阅读全文
posted @ 2015-09-20 15:35 bakari 阅读(866) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页
点击右上角即可分享
微信分享提示