Реализовал 2 сортировки - пузырёк и двухпутевое слияние. На пузырьке счётчик перестановок и сравнений работает хорошо, а вот для двухпутевого слияние сделал только счётчик перестановок. А вот счётчик сравнеий пока не знаю куда ставить. Сам код :
   int counS=0; //счётчик сравнений
   int counP=0; //счётчик перестановок
  
//... 
int  Merge(int first, int last)
  {
 int middle, start, final, j;
 int buff[N];
 middle=(first+last)/2; //делим массив
 start=first; //начало левой части
 final=middle+1; //начало правой части
  for(j=first; j<=last; j++) //от начала до конца
   {
 if ((start<=middle) && ((final>last) || (sts[start].oklad < sts[final].oklad)))
  {
  counP+=final-(middle+1);
  buff[j]=sts[start].oklad;
  start++;
  
   }
   else
   {
  buff[j]=sts[final].oklad;
   final++;
    
   }
     }
 //возвращение результата в список
  for (j=first; j<=last; j++)
  sts[j].oklad=buff[j];
  return counP;
  }
//рекурсивная процедура сортировки
 void MergeSort(int first, int last)
  {
     
    if (first<last)
    {
        MergeSort(first, (first+last)/2);        //сортируем левую часть
        MergeSort((first+last)/2+1, last);      //сортируем правую часть
        Merge(first, last);                     //сливаем две части
     }
}
Полный код сюда не лил, ибо простыня  http://pastebin.com/3za7Z245
 
Заранее спасибо.





