【软考】有趣的算法
来源:互联网 发布:淘宝有没有卖透视眼镜 编辑:程序博客网 时间:2024/05/16 06:20
基本介绍
对于习武之人,一招一式不过是花拳绣腿。真正决定胜负的还是要比拼内功。对于程序员来说,算法便是我们必须要修炼的一项基本功。它的重要性自然不言而喻。本篇博文就几种常规的算法做一个总结,欢迎相互交流。
算法:插入排序 选择排序 冒泡排序 快速排序
研究重点
算法的实现
时间、空间复杂度
特殊情况
一插入排序
实例:图书馆整理图书
注:假如上图中我们要求的顺序是蓝 红粉等等 。图中是蓝粉是已经排好的,红色的书是即
将要排序的,红书后面是无序的。现在我们将 红色的书就是要和粉的比一下,如果在粉的前
边,那么就要把粉往后挪一点给红色的书腾出一个位置。
2过程
图一 图二
注:i=4时 将第i本书复制一个到临时存的位置,然后从i前的一本一次和临时存储中的去比较,
如果粉书应该排在后面,那么它就往后挪一个位置。这一趟排完之后,把临时存储的这本红放到
给它腾出来的位置中去。
3相关量
时间复杂度:正常情况下,如果要排n本书, 外层要依次对n-1本书进行选位置。也就是进行n-1趟内层依次为1~n-1。
时间复杂度是内外两层关于n的一次函数的乘积。即为0(n2)
最佳情况,如果要排n本书,假设这些书本来就是有序的,那么实际上遍历n-1本书只进行了和它相近的一本书的比较。时间复杂度与内层的n无关了。即为O(n)
空间复杂度:看我的框图,只占用了一个空间,和n无关,即为O(1)
稳定性:如果有相同的两个数,那么插入排序总是后面的排在后面。即稳定。
二选择排序
实例:拔河比赛安排队员。如果老师要找几个人参加拔河比赛,那么他可能会从班里先找一个最胖的
把他安排到压轴位置,然后再从其它人中找剩下的人中最胖的的并将其安排到确定的位置。以此类推。
2过程
如果我们从最小的开始找,就是每次找一个最小,放到最前面,然后从剩下的数中再去找一个其次小的。放到已排好的后面。整体也就是这样一个三角形。
相信上过米老师课的人应该都对三个数比较大小这个算法印象深刻。套用上面的情况就是
先假设它是最小的,结果它就是最小的。没错,这就是选择排序的灵魂。那么究竟是怎样
实现的呢。下面这个框图粗略的解释一下每一次选择过程。
3相关量
时间复杂度
思路和上面算法一样,因为一趟要找到一个最小值。所以外层 n个数要找n-1次。内层
依次为n-1 ~1
总的时间复杂度是 内外两层关于n的一次函数的乘积。即为0(n2)
空间复杂度
看我的框图,只占用了一个空间,和n无关,即为O(1)
稳定性因为选择排序有对调过程。假设6 5 6 2 排序,那么采用选择排序的话 第一次排序之后,
6就已经被调换到6之后了。最后结果为2 56 6 即不稳定。
三冒泡排序
实例 因名而来。你看图中的①
这种情况是相邻两数相比,将较小数往上移 ,在去和下一个数比较,满足条件调换位置。
当然还有一种情况就是
有没有气泡的感觉.。o 0 你是不是也能画出一个和选择排序相似的三角形?
相关量
在冒泡排序中有一种特殊情况就是:当第一趟排序之后没有可交换的,即已经是有序时,就停止比较。
所以会出现平均复杂度为0(n2) 最好情况为0(n)。稳定。空间复杂度为0(1)
四 快速排序
1实例:照相。为了比较快速分两排,摄像师一般 会说以谁谁为准,高的在后站 矮的在前站。
这一步和快速排序的思想是一样的。以较快的速度先分出两拨。然后每拨中重复上述。
效果和照相一样,具体过程可能不太一样。在每次排序中,从两头开始,小头比大头大则对调。
由于它每次对半分,所以趟数是log以2为底 n的对数。每次还有2~n组。 所以总的时间复杂度
为nlog2n。 又由于结点都要保存,每运算一次,需要一个结点。所以它的空间复杂度也是nlog2n
。不稳定。
最后上一张压轴的图。
总结:
了解算法的每一步之后,再去做相关的题就基本不是问题了。虽然我尽量想简单明白的表示一下。不过看来效果并不太好。相互交流欢迎大家多多提意见。
- 【软考】有趣的算法
- 有趣的算法世界
- 一个有趣的算法
- 有趣的算法收藏
- 有趣的算法
- 一些有趣的算法
- 有趣的算法题
- 有趣的算法题
- 有趣的数算法
- 软考(2)--算法
- 软考之算法
- 软考-分治算法
- 【软考】算法-插入
- 【软考】算法-冒泡
- 【软考】算法-选择
- 有趣的算法世界---综述
- 一道有趣的算法题
- 几个简单有趣的算法
- ortp编程示例代码
- 12球问题
- 十进制转十六进制
- Android Fragment
- virtualization - hypervisor and CPU virtualization
- 【软考】有趣的算法
- Hadoop中两表JOIN的处理方法
- 图论500题
- jQuery方法
- powershell adsi
- Iphone图像渲染与屏幕适配
- 任何一个能够被3整除的正整数,取各位数字的立方和,再取各位数字的立方和, 重复有限次,必得到 153 这个数,且 153 再重复也还是153
- HLJUOJ1122(暴力枚举)
- 设计模式笔记-策略模式