冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
递归算法
递归方法通过函数调用自身将问题转化为本质相同但规模较小的子问题
如果一个对象的描述中包含它本身,我们就称这个对象是递归的,这种用递归来描述的算法称为递归算法
典型的递归: 从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,老和尚讲:从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,老和尚讲。。。
递归算法存在的两个必要条件:
(1)必须有递归的终止条件,如老和尚的故事一定要在某个时候应该被打断,可以是小和尚听烦了叫老和尚停止,或老和尚本身就只想重复讲10遍等;
(2)过程的描述中包含它本身。
递归思想的基本思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。用递归思想写出的程序往往十分简洁易懂。 一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
使用递归要注意以下几点:
(1)递归就是在过程或函数里调用自身;
(2)在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。