Sorting Examples - GNU Scientific Library -- Reference Manual
Description: GNU Scientific Library -- Reference Manual

Next: Sorting References and Further Reading, Previous: Computing the rank, Up: Sorting

### 12.5 Examples

The following example shows how to use the permutation p to print the elements of the vector v in ascending order,

         gsl_sort_vector_index (p, v);

         for (i = 0; i < v->size; i++)
         {
             double vpi = gsl_vector_get (v, p->data[i]);
             printf ("order = %d, value = %g\n", i, vpi);
         }

The next example uses the function `gsl_sort_smallest` to select the 5 smallest numbers from 100000 uniform random variates stored in an array,

         #include <gsl/gsl_rng.h>
         #include <gsl/gsl_sort_double.h>

         int
         main (void)
         {
           const gsl_rng_type * T;
           gsl_rng * r;

           size_t i, k = 5, N = 100000;

           double * x = malloc (N * sizeof(double));
           double * small = malloc (k * sizeof(double));

           gsl_rng_env_setup();

           T = gsl_rng_default;
           r = gsl_rng_alloc (T);

           for (i = 0; i < N; i++)
             {
               x[i] = gsl_rng_uniform(r);
             }

           gsl_sort_smallest (small, k, x, 1, N);

           printf ("%d smallest values from %d\n", k, N);

           for (i = 0; i < k; i++)
             {
               printf ("%d: %.18f\n", i, small[i]);
             }

           free (x);
           free (small);
           gsl_rng_free (r);
           return 0;
         }

The output lists the 5 smallest values, in ascending order,

         $ ./a.out
         5 smallest values from 100000
         0: 0.000003489200025797
         1: 0.000008199829608202
         2: 0.000008953968062997
         3: 0.000010712770745158
         4: 0.000033531803637743

The GNU Scientific Library - a free numerical library licensed under the GNU GPL
Back to the GNU Scientific Library Homepage