算法效率的度量
Posted 学习只为旅行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法效率的度量相关的知识,希望对你有一定的参考价值。
空间换时间的例子:
/*
问题:
在一个由自然数1-1000中某些数字所组成的数组中,每个数字可能出现零次或者多次。
设计一个算法,找出出现次数最多的数字。
*/
#include <iostream>
using namespace std;
void search(int a[], int len) // O(n)
{
int sp[1000] = {0};//0-999格子记录出现的次数
int max = 0;
for(int i=0; i<len; i++)
{
sp[a[i] - 1]++;//统计工作
//为什么要减一呢?自然数1-1000,1000的话会越界,所以减一
//记录的是数字出现次数
}
for(int i=0; i<1000; i++)
{
if( max < sp[i] )
{
max = sp[i];
}
}
for(int i=0; i<1000; i++)
{
if( max == sp[i] )
{
cout << i + 1 << endl;//打印出来的就是出现最多的数字了
}
}
}
int main(int argc, char* argv[])
{
int a[] = {1, 1, 3, 4, 5, 6, 6, 6, 3, 3};
search(a, sizeof(a)/sizeof(*a));
return 0;
}
很巧妙的算法,好好看看
只能说是同一个级别的,不能说相同!!!
小结
以上是关于算法效率的度量的主要内容,如果未能解决你的问题,请参考以下文章