diff --git a/examples/tri_selection/tri.c b/examples/tri_selection/tri.c index 5bbc7f32a088c42b4a6c8e3880fe0269c5465ff0..e1feebbaba3c57d564f4df4da5125c2888b19e9a 100644 --- a/examples/tri_selection/tri.c +++ b/examples/tri_selection/tri.c @@ -1,26 +1,38 @@ #include <stdio.h> #include <stdlib.h> +#include <time.h> #define SIZE 10 -void find_min(double tab[], int i0, int *ind) { - double min = tab[i0]; - *ind = i0; +void find_min(double tab[], int i0, int *ind, double *min) { + *min = tab[i0]; + *ind = i0; for (int i = i0 + 1; i < SIZE; ++i) { - if (min > tab[i]) { + if (*min > tab[i]) { *ind = i; - min = tab[i]; + *min = tab[i]; } } } int main() { + srand(time(NULL)); double tab[SIZE]; for (int i = 0; i < SIZE; ++i) { tab[i] = rand() / (double)RAND_MAX; } for (int i = 0; i < SIZE - 1; ++i) { - double + double min = tab[i]; + int ind_min = i; + find_min(tab, i, &ind_min, &min); + double tmp = tab[i]; + tab[i] = min; + tab[ind_min] = tmp; } + + for (int i = 0; i < SIZE; ++i) { + printf("%f ", tab[i]); + } + printf("\n"); }