最近在阅读《算法新解》(刘新宇 著),书写得很不错,推荐程序们阅读。前言中有个例子,是寻找第1500个丑数,所谓丑数是指仅含2、3、5这三个素因子的自然数。作者在书中给出了伪代码。作为练习,记录下自己的代码。
一、暴力查找法
算法思路 :迭代每个自然数,逐一判断是否是丑数,并观察累计计数是否达到1500,如果是,则成功找到了第1500个丑数
#include <iostream>
#include <limits.h>
#include <time.h>
using namespace std;
bool isUgly(int);
int main() {
cout << "寻找第1500个丑数" << endl;
clock_t start_time = clock();
int count = 1; //我们认为1是第1个丑数
for(int i=2;i<INT_MAX;i++){
if(isUgly(i)){
if(++count == 1500) {
cout << "第1500个丑数是: " << i << endl;
break;
}
}
}
clock_t end_time = clock();
cout << "运行总耗时(秒): " << static_cast<double>(end_time - start_time)/CLOCKS_PER_SEC << endl;
return 0;
}
bool isUgly(int number){
while(number > 1){
if(number % 2 == 0) number /= 2; else break;
if(number == 1) retu

博主分享了在阅读《算法新解》时遇到的寻找第1500个丑数的问题,通过暴力查找法和多队列方法进行了实现。暴力查找法简单但效率低下,而多队列方法利用数据结构显著提高了效率,计算耗时仅为暴力法的13万分之一,凸显了算法和数据结构的重要性。
最低0.47元/天 解锁文章
2016

被折叠的 条评论
为什么被折叠?



