-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.c
77 lines (71 loc) · 1.79 KB
/
test.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <limits.h>
int longAlg(int array[],int n){
int product = INT_MIN;
for (int i = 0; i < n; i++){
int a = array[i];
for (int j = i + 1; j < n; j++){
int b = array[j];
if (a * b >= product) product = a * b;
}
}
return product;
}
int fastAlg(int array[], int n){
int product = INT_MIN, max1 = 0, max2 = 0, index1 = -1,
min1 = 0, min2 = 0, index2;
for (int i = 0; i < n; i++){
if (array[i] > max1) {
max1 = array[i];
index1 = i;
}
else if (array[i] < min1){
min1 = array[i];
index2 = i;
}
}
for (int i = 0; i < n; i++){
if (array[i] > max2 && i != index1){
max2 = array[i];
}
else if (array[i] < min2 && i != index2){
min2 = array[i];
}
}
int productN = min1 * min2;
int productP = max1 * max2;
if (n == 2){
return array[0] * array[1];
}
else if (productN >= productP){
return productN;
}
else if (productP >= productN){
return productP;
}
}
int main()
{
srand(time(0));
int* array, n = 0;
for (int m = 0; m < 100; m++){
n = rand() % 9 + 2;
array = malloc(n * sizeof(array[0]));
if (!array) {printf("Allocation failed"); exit(1);}
for (int j = 0; j < n; j++){
array[j] = (rand() % 7 - 3);
}
int myProduct = fastAlg(array, n);
int common = longAlg(array, n);
if (common != myProduct){
for (int j = 0; j < n; j++){
printf("%d ", array[j]);
}
printf("\n %d %d \n", myProduct, common);
}
free(array);
}
return 0;
}