Buenas,
Tengo hecho este codigo para ordenar un array usando el campo key que es un int, pero no me lo ordena del todo bien y no se donde esta el error, me podrian ayudar?
Muchas gracias de antemano
Tengo hecho este codigo para ordenar un array usando el campo key que es un int, pero no me lo ordena del todo bien y no se donde esta el error, me podrian ayudar?
Código (c) [Seleccionar]
#include <stdio.h>
typedef struct {
char data[4096];
int key;
} item;
item array[] = {
{"Juan", 3},
{"Pedro", 4},
{"Victor", 2},
{"Antonio", 5},
{"Alejandro", 1},
};
void sort(item *a, int n) {
int i = 0, j = 0;
int s = 1;
item* p;
for(; i < n & s != 0; i++) {
s = 0;
p = a;
j = n-1;
do {
if( p->key > (p+1)->key) {
item t = *p;
*p = *(p+1);
*(p+1) = t;
s++;
}
} while ( --j >= 0 );
}
}
int main() {
int i;
sort(array,5);
for(i = 0; i < 5; i++){
printf("Array[%d] = { %s, %d}\n", i, array[i].data, array[i].key);
}
return 0;
}
Muchas gracias de antemano