C/C++ code#include
#include
#include
using namespace std;
#define MAX 1000
void Search(double *value, int len){
int first=0, second=0; //the objective x coordinate value
double max_val=value[0], sub_val=value[0];
for(int i=0; i
if(max_val
sub_val=max_val;
max_val=value[i];
second=first;
first=i;
}
else if(sub_valvalue[i]) {
sub_val=value[i];
second=i;
}
else {}
}
cout<
cout<
}
int main() {
double value[255];
srand( (unsigned)time(NULL) );
for(int i=0; i<255; ++i) value[i]=( rand()%MAX )/10.0; //initialize the array
Search(value, 255);
return 0;
}
------解决方案--------------------C/C++ code#include
#include
#include
int search(const double *value, size_t len, int *ndx1, int *ndx2)
{
if (value == NULL || len == 0)
{
return -1;
}
double h1, h2;
*ndx1 = *ndx2 = 0;
h1 = h2 = value[0];
for (int i = 1; i < len; ++ i)
{
if (value[i] > h1)
{
h2 = h1;
*ndx2 = *ndx1;
h1 = value[i];
*ndx1 = i;
}
else if (value[i] > h2)
{
h2 = value[i];
*ndx2 = i;
}
}
return 0;
}
int main()
{
double value[255];
int ndx1, ndx2;
srand((unsigned int)time(NULL));
for (int i = 0; i < 255; ++ i)
{
value[i] = rand() * 1.72 / RAND_MAX;
}
if (search(value, 255, &ndx1, &ndx2) == 0)
{
printf("value[%d]:%lf, value[%d]:%lf\n", ndx1, value[ndx1], ndx2, value[ndx2]);
}
return 0;
}