[ create a new paste ] login | about

Link: http://codepad.org/MLHcnpcb    [ raw code | output | fork ]

andochin - C, pasted on Jul 13:
#include <stdio.h>
#include <stdlib.h>

#define COUNT 10

int num[COUNT];
int idx[COUNT];

int comparator(const void* l, const void* r)
{
    const int* lv = l;
    const int* rv = r;

    return num[*rv] - num[*lv];
}


int main(void)
{
    int i;

    for(i = 0; i < COUNT; i++) {
        num[i] = rand() % 100;
        idx[i] = i;
    }

    printf("Before sorting\n");
    printf("index : value\n");
    for(i = 0; i < COUNT; i++) {
        printf("  %3d : %4d\n", idx[i], num[idx[i]]);
    }

    qsort(idx, COUNT, sizeof(int), comparator);

    printf("\nAfter sorting\n");
    printf("value : index\n");
    for(i = 0; i < COUNT; i++) {
        printf(" %4d : %3d\n", num[idx[i]], idx[i]);
    }

    return 0;
}


Output:
Before sorting
index : value
    0 :   83
    1 :   86
    2 :   77
    3 :   15
    4 :   93
    5 :   35
    6 :   86
    7 :   92
    8 :   49
    9 :   21

After sorting
value : index
   93 :   4
   92 :   7
   86 :   1
   86 :   6
   83 :   0
   77 :   2
   49 :   8
   35 :   5
   21 :   9
   15 :   3


Create a new paste based on this one


Comments: