随笔分类 - 数据结构与算法分析
摘要:Tencent2012 笔试题附加题问题描述:例如手机朋友网有n个服务器,为了方便用户的访问会在服务器上缓存数据,因此用户每次访问的时候最好能保持同一台服务器。已有的做法是根据ServerIPIndex[QQNUM%n]得到请求的服务器,这种方法很方便将用户分到不同的服务器上去。但是如果一台服务器死掉了,那么n就变为了n-1,那么ServerIPIndex[QQNUM%n]与ServerIPIndex[QQNUM%(n-1)]基本上都不一样了,所以大多数用户的请求都会转到其他服务器,这样会发生大量访问错误。问:如何改进或者换一种方法,使得:(1)一台服务器死掉后,不会造成大面积的访问错误,(2
阅读全文
摘要:前言:今天早上来实验室,同桌问了我一个问题:找出一个数组里面前K个最大数的高效算法。最近正好在看数据结构和算法相关内容,便以己之力帮她思考了思考。问题:找出一个数组里面前K个最大数。解法:1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数。排序算法的选择有很多,考虑数组的无序性,可以考虑选择快速排序算法,其平均时间复杂度为O(NLogN)。具体代码实现可以参见相关数据结构与算法书籍。2.观察第一种算法,问题只需要找出一个数组里面前K个最大数,而第一种算法对数组进行全排序,不单单找出了前K个最大数,更找出了前N(N为数组大小)个最大数,显然该算法存在“冗余”,因此基于
阅读全文
摘要:本文介绍一种相对特殊的排序算法,桶式排序,并提供其实现、分析其算法复杂度。桶式排序:如果我们有N个整数,范围从1到M(或从0到M-1),我们可以利用这个信息得到一种快速的排序,叫做桶式排序(bucket sort)。我们留置一个数组,称之为Count,大小为M,并初始化为零。于是,Count有M个单元(或桶),开始时他们都是空的。当数组元素A[i]被读入时Count[A[i]]增1。在所有的输入被读进以后,扫描数组Count,打印输出排好序的表。该算法花费O(M+N)。——摘自《数据结构与算法分析-C语言描述》 p40由此我们可以发现桶式排序需要满足的两个前提条件:第一,待排序数组元素为非负整
阅读全文
摘要:本人是电信出身,爱编程,但由于专业原因,没有经历系统的计算机相关课程的学习,包括数据结构。最近闲暇之余,看到《数据结构与算法分析-C语言描述》一书,顿生好感,把以前零零碎碎的数据结构、算法知识一一展现,系统而全面,相当不错的一本书。
阅读全文

浙公网安备 33010602011771号