文章分类 -  算法设计

计算机算法设计
摘要:运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前还是大多数人的梦想。《程序员的思维修炼》一书中将程序员分为5个层级:新手,高级新手,胜任者,精通者,专家。根据作者的调查研究结果,在这5个层级中,大多数的程序员属于高级新手。而且居于这个层级的程序员从入行1、2年的到工作10来年都大有人在。身为一个程序员,如何才能尽快的突破自身的瓶颈,得到快速的提升那?这可真不是三言两语可以说清楚。本人09年毕业投身软件行业,2012年初离开工作了三年的公司A,加入了现在的公司B。算到现在呆在B公司也即将满一年了。但是我敢说在B公司1年学到的东西,比在A公司3年 阅读全文
posted @ 2013-03-24 16:21 Skysper 阅读(327) 评论(1) 推荐(0)
摘要:问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数。(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据;(2)只要前K个,对整个输入数据的保存和排序是相当的不可取的。 可以利用数据结构的最小堆来处理该问题。 最小堆如图所示,对于每个非叶子节点的数值,一定不大于孩子节点的数值。这样可用含有K个节点的最小堆来保存K个目前的最大值(当然根节点是其中的最小数值)。 每次有数据输入的时候可以先与根节点比较。若不大于根节点,则舍弃;否则用新数值替换根节点数值。并进行最小堆的调整。 实现代码以及说明:#include<stdio.h... 阅读全文
posted @ 2013-03-20 21:57 Skysper 阅读(392) 评论(0) 推荐(0)
摘要:合并排序(C语言实现)递归算法是把一个问题分解成和自身相似的子问题,然后再调用自身把相应的子问题解决掉。这些算法用到了分治思想。其基本模式如下:分解:把一个问题分解成与原问题相似的子问题解决:递归的解各个子问题合并:合并子问题的结果得到了原问题的解。现在就用递归算法,采用上面的分治思想来解合并排序。 合并排序(非降序)分解:把合并排序分解成与两个子问题伪代码:MERGE_SORT(A, begin, end)if begin < end then mid<- int((begin + end)/2) MERGE_SORT(A, begin, mid) ... 阅读全文
posted @ 2013-02-21 22:43 Skysper 阅读(273) 评论(0) 推荐(0)