LINUX.ORG.RU

Сообщения C_student

 

Сортировка структуры

Форум — Development

Доброе время суток.
Задался целью отсортировать структуру двумя методами.
Пузырьком и быстрой сортировкой. Сортировка 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

 , ,

C_student
()

RSS подписка на новые темы