Neden y[i] < x[i]
işlevi, x dizisi her zaman y değerinden her zaman daha yüksek olduğunda iki kat daha fazla zaman alır (örneğin, 1<x<2
ve 0<y<1
). Ayrıca, 0.5<x<1.5
ve 0<y<1
'u karşılaştırırken, yürütme süresi, 0<x<1
ve 0<y<1
'un bulunduğu durumda yaklaşık 1,5x'dir. Bu, x ve y'nin uzun diziler olduğunu varsayar.Karşılaştırma işleçlerinin karmaşıklığı
Sizin için ne demek istediğimi anlamaya çalıştığınız kodu ekliyorum. Eğer (= 0 = 1 ofset denemek ve ofset) artırılması ve ofset değişkeni" azaltarak dizi x dengeleyebilir, kod dosyası Beta döngüler için yürütme zamanı depolar
kodudur:
.#include <iostream>
#include <array>
#include <time.h>
#include <math.h>
using namespace std;
#define MAX(x,y) ((x) > (y) ? (x) : (y))
int main()
{
ofstream myfile_Beta;
myfile_Beta.open ("Beta.txt");
clock_t begin_time = clock();
clock_t total_time;
srand (time(NULL));
double offset =0.0;
int m=0;
for(int k=0;k<10000;k++)
{
m=1;
double M[75720],x[75720],y[75720];
for (int i=0;i<75720;i++)
{
x[i]=+(rand()%1024)/1024.0* 1.0 + offset ;
y[i]=+(rand()%1024)/1024.0* 1.0 + 0.00;
}
begin_time = clock();
for (int j=0;j<75720;j++)
{
M[j]=MAX(x[j],y[j]);
}
total_time =clock() - begin_time;
myfile_Beta <<float(total_time )<<" "<<endl;
}
myfile_Beta.close();
}
Kendi tanımlamak etmeyiniz 'MAX' kullanmak [' std :: max'] (http://en.cppreference.com/w/cpp/algorithm/ max) – Mgetz
"rand()' işlevini çağırmak "ofset'inizi" komik yapar. – user3528438
@Mgetz std :: max daha fazla zaman kullanır. – user304584