(二)算法--排序算法总概
有两种思想,就像是摆放在天鹅绒上的宝石那样褶褶生辉,一个是微积分,另一个就是算法。微积分以及在微积分基础上建立起来的数学分析体系造就了现代科学,而算法则造就了现在世界。--大卫 柏林斯基
1、什么是算法?
Algorithm(算法)是一系列解决问题的明确指令,也就是说,对于符合一定规范的输入,能够在有限的时间内获得要求的输出。
算法是不依赖于计算机存在的,之前的computer是一些从事数学计算的人。当有了计算机以及其他的电子设备的时候,绝大多数算法就可以依靠计算机来执行,但是算法本身并不依赖这样的假设。
2、为什么要用算法?
是因为生活中的一些问题需要解决,而解决问题的方式可能有很多种,把解决问题的过程抽象出来,有一个程序化解决方案。算法设计和分析过程的一般思路,如下图。
3 排序问题?
上述简单的理解了算法,和算法设计和分析的思路。那生活中的排序问题有很多种,例如员工按照工位号大小排序,按照姓氏进行排序,按照户口所在地进行排序等一些列问题。我们都可以把一些排序问题,最终抽象为数的“代表”来进行排序,这样利用计算机执行算法,提高效率。
4 排序问题解决方案
站在巨人肩膀上,先人们想出了几种解决问题的办法,现排序问题有几种解决方案。
选择排序、冒泡排序、合并排序(归并排序)、快速排序 、直接插入排序、希尔排序、堆排序、基数排序。
为了理解,和知识归纳,我们把算法解决的策略大致可以分为几种。
蛮力法
简单选择排序、冒泡排序
减治法
直接插入排序、希尔排序
分治法
合并排序(归并排序)、快速排序
变治法
堆排序
非比较排序
基数排序(空间换时间)
各个算法的时间和空间复杂度,以及平均复杂度和最好最坏复杂度,如下图。
下一篇介绍蛮力策略的简单选择排序和冒泡排序。