C++版测试性能
来源:1-1 欢迎大家来到算法与数据结构的世界
慕用0058068
2021-06-27 13:30:01
相关代码:
#include <iostream>
class Generator{ // 随机生成数据
int _n;
public:
Generator( int n ):_n(n){};
void opera( int *arr ); // 生成n个不同随机数
int *generator_array( ){ // 生成随机数组
static int *arr = new int[_n];
opera( arr );
return arr;
}
};
void Generator::opera(int *arr)
{
srand(time(NULL));
int count = 0;
while (count != _n)
{
int num = rand() % _n;
arr[count++] = num;
for (int i = 0; i < count - 1; i++)
if (arr[i] == arr[count - 1])
{
count--; // 回溯
break;
}
}
}
template <typename T>
int linear_search ( T&e, T* data, int lo, int hi ) { // 区间版:返回最后一个元素e的位置;失败时,返回lo - 1
while ( ( lo < hi-- ) && ( e != data[hi] ) ); // 从后向前,顺序查找
return hi; // 若hi < lo,则意味着失败;否则hi即命中元素的秩
}
template <typename T>
int linear_search ( T&e, T* data, int size ) { // 全体版,T* data改成引用 T (&data)[size]
return linear_search ( e, data, 0, size );
}
int main( ){
int n = 10000;
Generator g(n);
int *arr = g.generator_array();
for ( int i = 0; i < n; i ++ )
std::cout<< arr[i] << ((i+1)%8?' ':'\n');
// 输出数组:一行8个
double start = clock( ); // C++ 程序性能吞吐量计算
std::cout<< (linear_search(n, arr, n) != -1 ?"find":"Not find") << std::endl;
double end = clock( );
std::cout << n << ": " << ( end - start ) / (CLOCKS_PER_SEC ) << "秒";
// CLOCKS_PER_SEC * 60 就是以分钟为单位
}
1回答
赞!你可以基于这个课程的内容创建一个代码仓,放到 github 上,分享给大家:)
继续加油!:)
相似问题