Сортировка структуры
Доброе время суток.
Задался целью отсортировать структуру двумя методами.
Пузырьком и быстрой сортировкой. Сортировка qsort работает как нужно - поля меняются местами, а вот в пузырьке меняются местами только цифры, по которым происходит сортировка.
Оно и понятно, ведь со структурой мы ничего, кроме перестановки цифр не делаем.
Вопрос
Как правильно сортировать структуру пузырьком ?
typedef struct STR{
char fio[N];
char dolzn[N];
int stage;
int oklad;
char fack[N];
char date_create[N];
}
st;
int n=0;
st sts[N];
int zarp(const void* a, const void* b)
{
const st* k = (const st*)a;
const st* m = (const st*)b;
int s = ((k -> oklad) - (m -> oklad));
return s;
}
void bubble_sort()
{
for (int i = 0 ; i < n ; i++)
{
for (int j = 0 ; j < n - 1 - i ; j++)
{
if (sts[j].oklad > sts[j+1].oklad )
{
int tmp= sts[j].oklad;
sts[j].oklad = sts[j+1].oklad;
sts[j+1].oklad = tmp;
}
}
}
print2();
}
int main()
{
ifstream ar("in.cpp");
n=count(istreambuf_iterator<char>(ar),
istreambuf_iterator<char>(), '\n');
ifstream in;
in.open("in.cpp");
for (int i = 0; i < n; ++i)
{
in>>sts[i].fio;
in>>sts[i].dolzn;
in>>sts[i].stage;
in>>sts[i].oklad;
in>>sts[i].fack;
in>>sts[i].date_create;
}
print();
bubble_sort();
qsort(sts, n , sizeof(st), zarp);
print2();
in.close();
return 0;
}
Полный код http://pastebin.com/qLe5Juwi