İndis Sıralama 2 (Index Sort)
void index_sort(int a[], int b[], int len);
Fonksiyonu, birinci parametresindeki adreste bulunan dizinin sıralanmış (sort) biçimini elde etmek için izlenmesi gereken indis numaralarını ikinci parametresindeki adreste bulunan dizi içine yazar. Fonksiyonu sıralama işlemi için baloncuk sıralaması (buble sort) yöntemini kullanıyor.
a[] 10 2 -65 9 90 100 -17 32 -3 50
b[] 2 6 8 1 3 0 7 9 4 5
a[b[]] -65 -17 -3 2 9 10 32 50 90 100
#include <stdio.h> #define SIZE 10 void index_sort(int *, int *, int); void print_array(const int *, int len); int main() { int a[SIZE] = {10, 2, -65, 9, 90, 100, -17, 32, -3, 50}; int b[SIZE], i; index_sort(a, b, SIZE); printf("\n\na[]\t"); print_array(a, SIZE); printf("\nb[]\t"); print_array(b, SIZE); printf("\na[b[]]\t"); for (i = 0; i < SIZE; i++) printf("%4d ", a[b[i]]); return 0; } /************************************************/ void index_sort(int a[], int b[], int len) { int i, j, temp; for (i = 0; i < len; i++) b[i] = i; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (a[b[j]] > a[b[j + 1]]) { temp = b[j]; b[j] = b[j + 1]; b[j + 1] = temp; } } /*************************************************/ void print_array(const int *ptr, int len) { int i; for (i = 0; i < len; i++) printf("%4d ", ptr[i]); }
