Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.95 KB | None | 0 0
  1. /*Моя структура выглядит так*/
  2. struct bookNote {
  3.     char author[12];
  4.     char title[32];
  5.     char publisher[16];
  6.     short int year;
  7.     short int pages;
  8. };
  9. /*title - Ф.И.О. замечательного человека*/
  10.  
  11. /*Сейчас объясняю - я сдавал это на массиве указателей и она принимала
  12. (не на списках, вообще не упоминай их без надобности)
  13. По-поводу сортировки по фамилиям - мой товарищ сказал, что и цифровая сортировка всего подряд прокатывала.
  14. Вообще, это очень сложно реализовать без каких-то костылей и велосипедов сложная.
  15. В любом случае, стучись в лс если не прокатит - у меня есть сортировка и на списках, но
  16. её сдаёт куча людей. Это сдавал ЛИЧНО Я.*/
  17.  
  18. void Digital_Sort(struct bookNote **inx) {
  19.     bookNote *array[256][1000];
  20.     int k = 1;
  21.     int counter[256];
  22.     for (int rank = 31; rank >= 0; --rank) {
  23.         for (int i = 0; i < 256; ++i)
  24.             counter[i] = 0;
  25.         for (int i = 0; i < 4000; ++i) {
  26.             int tmp = (int)(inx[i]->title[rank]);
  27.             tmp = tmp < 0 ? tmp + 128 : tmp;
  28.             array[tmp][counter[tmp]]= inx[i];
  29.             counter[tmp]++;
  30.         }
  31.         int arrayNumber = 0;
  32.         int inxNumber = 0;
  33.         for (int i = 0; i <= 255; ++i) {
  34.             while (arrayNumber != counter[i]) {
  35.                 inx[inxNumber] = array[i][arrayNumber];
  36.                 arrayNumber++;
  37.                 inxNumber++;
  38.             }
  39.             arrayNumber = 0;
  40.         }
  41.     }
  42. }
  43.  
  44. /*Цифровую сортировку смотри сам, работает аналогично, сравнивая char'ы как int*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement