笔试中遇到的一些算法问题
2011-01-27 15:34
309 查看
算法:删除一个字符串中的数字。
从n个数中取出m个最大的最好的算法是什么?
有很多算法,复杂度也不尽相同。以下简单举几个例子:
1. n×m遍扫描
【算法基本描述】n×m遍扫描
【算法思想】每次都扫描一遍数组,取出最大元素,这样扫描m遍就能得到m个最大的数
【算法复杂度】O(nm)
2.排序后取最大m个数
【算法基本描述】对n个数排序,对拍完序后的序列取m个最大的数
【算法复杂度】视排序的复杂度,一般为O(nlogn)或O(n^2)
3.最小堆
【算法基本描述】一遍扫描+最小堆
【算法伪代码】
00-建立一个最小堆(优先队列),最小堆的大小控制在m之内
01-for 每个数:
02-----if 这个数比最小堆的堆顶元素大:
03---------弹出最小堆的最小元素
04---------把这个数插入到最小堆
05-最小堆中的m个元素就是所要求的元素
06-其中最小堆的作用就是保持里面始终有m个最大元素,且m个元素中最小的元素在堆顶。
【算法复杂度】O(nlogm) 遍历O(n) 最小堆O(logm)
【其他】如果要求n个数中取最小的m个,只要把算法反一下即可
总结:当n与m差不多大时,采用复杂度较低的排序是比较可取的,因为简单。当m<<n时,排序是很浪费时间的,因为我们不需要后(n-m)个数,所以可以采用最小堆的方法。
我不敢说我的算法是最好的,但是它一定是一个复杂度较低的算法。
最小堆图片:
char a[] = "11few15few4fwe1f5w1f1wef1wef1we", *p1 = a, *p2 = a; for( ; *p1 = *p2; ++p2 ) if( *p2 < '0' || *p2 > '9' ) ++p1;
从n个数中取出m个最大的最好的算法是什么?
有很多算法,复杂度也不尽相同。以下简单举几个例子:
1. n×m遍扫描
【算法基本描述】n×m遍扫描
【算法思想】每次都扫描一遍数组,取出最大元素,这样扫描m遍就能得到m个最大的数
【算法复杂度】O(nm)
2.排序后取最大m个数
【算法基本描述】对n个数排序,对拍完序后的序列取m个最大的数
【算法复杂度】视排序的复杂度,一般为O(nlogn)或O(n^2)
3.最小堆
【算法基本描述】一遍扫描+最小堆
【算法伪代码】
00-建立一个最小堆(优先队列),最小堆的大小控制在m之内
01-for 每个数:
02-----if 这个数比最小堆的堆顶元素大:
03---------弹出最小堆的最小元素
04---------把这个数插入到最小堆
05-最小堆中的m个元素就是所要求的元素
06-其中最小堆的作用就是保持里面始终有m个最大元素,且m个元素中最小的元素在堆顶。
【算法复杂度】O(nlogm) 遍历O(n) 最小堆O(logm)
【其他】如果要求n个数中取最小的m个,只要把算法反一下即可
总结:当n与m差不多大时,采用复杂度较低的排序是比较可取的,因为简单。当m<<n时,排序是很浪费时间的,因为我们不需要后(n-m)个数,所以可以采用最小堆的方法。
我不敢说我的算法是最好的,但是它一定是一个复杂度较低的算法。
最小堆图片:
相关文章推荐
- 最进2011校招笔试中遇到的一些算法c语言的
- python机器学习-预测分析核心算法3-2代码在python3下运行遇到的一些问题
- 经过几次的面试和笔试或者考试,难免会遇到一些棘手问题(总结下,为下一站准备)
- VS2003工程转VS2005工程遇到的一些问题
- 云服务器构建LNMP环境遇到的一些问题及解决方法
- cas 部署过程中遇到的一些问题(持续更新)
- 使用ZFPlayer过程中遇到的一些问题及解决办法
- 开发过程遇到的一些问题(四)
- Git远程库操作遇到的一些问题
- 初学STM32遇到的一些问题
- 遇到的一些问题梳理
- ubuntu下安装QT5遇到的一些问题和解决方法
- 问题:部署到iis上后Chart图片不显示;结果:使用webchart过程中遇到的一些问题
- Java中关于空格遇到的一些问题
- 装ubuntu遇到的一些问题 && solution
- 配置spring-boot-actuator时候遇到的一些小问题
- tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)
- Python Beautifulsoup 自学过程中遇到的一些问题
- hadoop完全分布式过程中遇到的一些问题和总结
- Spring4.0使用websocke遇到的一些问题