算法控件
1. 怎么测试一个算法的性能,用什么软件
这个要从两个维度去考证:
一、测算指标,算法都是有数学理论基础的,在翻译成计算机程序后,算法的执行效率可以用赋值、比较、运算等操作次数,以及缓存、内存占用率等指标进行一定的估算,还应对算法效率进行计算,进行比较评估,包括迭代深度、循环/判断嵌套深度等指标。
二、实际测试,这个就是要把算法真的用计算机实现出来,将算法逻辑封装为函数、控件、组件等,可调用的独立环节(尽量减少非算法语句的干扰),然后进行实际调用,记录执行周期,分析实际性能。比如对比记录新旧算法单次执行的周期、固定数量多次执行的周期、执行期间资源占用率、多线程并发调用的执行效率等指标。
另外、对于实际测试,如果想用专业测试软件执行,可以用LoadRunner、Robot等专业软件测试工具执行相应操作,但是对于您的要求,我还是建议收集性能指标的程序最好自己写,其实并不复杂,就是调用您的算法组件,把执行时间等参数记下来。
2. QT控件图标的移动算法
开始在0,0,目标地址在100,200 移动时从分别设置lable.left和label.top即可 例如每隔1秒钟移动一次 0,0 1,2 2,4 ... 100,200 浮点型的问题: 例如目标地址是:100,240 0,0 1,2.4 2,4.8 3,7.2 关于除不尽的情况,取整或四舍五入即可,没必要那么精确吧。 说了这么多,希望对你有所帮助,^_^睡觉了。 回答补充:鼠标点击的不一定是100,200这么有规律的数字啊! 是啊,如果是100.38283,58.392932,则认为是100,58 同样,假设起始坐标是20.2555,67.655,则视为:20,67 那么总共算出水平位置移动100-20=80,垂直位置移动,58-67=-9.你算出或者用算法算出总共分多少下移动过来:例如10次,那么,x数值每次变化:80/10,y每次变化:-9/10。每次坐标就是:当前坐标+变化量。 说了这么多,希望你能明白。^_^,有问题可以留言
3. 算法问题 warning C4715: “func”: 不是所有的控件路径都返回值 怎么消除
#include "stdaf.h"
#include <iostream>
using namespace std;
/码搭/找到第m小唤搜的数
int func(int a[] , int first ,int last , int m)
{
static int tt;
if(first == last)
{
tt = a[first];
}
if(first < last)
{
int i = first , j = last;
int t = a[i];
while(i < j)
{
while(i < j && a[j] > t)
{
--j;
}
if(i < j)
{
a[i++] = a[j];
}
while(i < j && a[i] < t)
{
++i;
}
if(i < j)
{
a[j--] = a[i];
}
}
a[i] = t;
if(i < m-1)
{
func(a , i+1 , last , m);
}
else if(i > m-1)
{
func(a , first , i-1 , m);
}
else
{
tt = a[i];
}
}
return tt;
}
int main()
{
int a[] = {2, 5, 3, 7, 2, 8, 9};
for(int i = 0 ; i != sizeof(a) / sizeof(a[0]) ; ++i)
{
cout<<a[i]<<'\t';
}
cout<< endl << "*************************" << endl;
cout<<func(a , 0 , sizeof(a) / sizeof(a[0]) - 1 , 1)<<迟链拿endl;
return 0;
}