编程沙龙(02)
IT商界
主持人介绍:中国虫,当然是他的网名了,从大学开始对编程就产生了浓厚的兴趣,并且和一群非计算机专业的朋友、同学一起创立了一家软件公司。一个对编辑非常精通并执着的朋友,经过小编的邀请来解答读者们近期的编程问题。
什么是算法的复杂性
山东读者 刘晓:看了上期的“算法演义”栏目后,我也买了一本相关的书籍来认真学习,但现在还是对算法复杂性这个概念不是很清楚。
主持人:算法的复杂性是用来衡量算法效率的,是评价算法优劣的重要依据。一个算法复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越少,则该算法的复杂性越低。这里计算机的资源主要是指时间(运行算法所需要的时间)和空间(占用存储器的大小)资源。所以,算法的复杂性可分为时间复杂性和空间复杂性。
根据上面的定义,很容易看出,如果解决相同的问题,复杂性低的算法要比复杂性高的算法效率高。
排序和冒泡算法的区别
湖北读者 邓武:请问选择排序和冒泡排序算法的区别是什么,哪种算法更好点,因为我现在正编写一个程序要对两种算法进行选择。
主持人:选择排序算法和冒泡排序算法的区别在于,用冒泡法每次比较时如果发现位置颠倒,就进行置换,而选择法并不立即进行置换,而是看看后面还有没有更小(或更大)的再进行置换。所以如果不考虑置换的操作所用时间用时,那选择排序法不比冒泡法快,而如果置换操作比较耗时的话,由于选择排序只要N-1次置换,显然排序的数据越多,选择排序就比冒泡法越省时。
怎样学好算法
上海读者 张章:我想学好编程,看了上期“算法演义”知道了算法在编程中的作用,那么可以告诉我如何才能学好算法吗?
主持人:首先要学习并理解常用的算法策略,例如搜索法、分治法、递归法、贪心算法、随机算法、模拟法、近似算法等。关键是“实践出真知”。当然在学习算法的过程中,并不是孤立的学习算法,还要学习数据结构。数据结构是信息的组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。最后在应用算法解决专业问题的时候,还要具备一定的专业知识。