Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Моя структура выглядит так*/
- struct bookNote {
- char author[12];
- char title[32];
- char publisher[16];
- short int year;
- short int pages;
- };
- /*title - Ф.И.О. замечательного человека*/
- /*Сейчас объясняю - я сдавал это на массиве указателей и она принимала
- (не на списках, вообще не упоминай их без надобности)
- По-поводу сортировки по фамилиям - мой товарищ сказал, что и цифровая сортировка всего подряд прокатывала.
- Вообще, это очень сложно реализовать без каких-то костылей и велосипедов сложная.
- В любом случае, стучись в лс если не прокатит - у меня есть сортировка и на списках, но
- её сдаёт куча людей. Это сдавал ЛИЧНО Я.*/
- void Digital_Sort(struct bookNote **inx) {
- bookNote *array[256][1000];
- int k = 1;
- int counter[256];
- for (int rank = 31; rank >= 0; --rank) {
- for (int i = 0; i < 256; ++i)
- counter[i] = 0;
- for (int i = 0; i < 4000; ++i) {
- int tmp = (int)(inx[i]->title[rank]);
- tmp = tmp < 0 ? tmp + 128 : tmp;
- array[tmp][counter[tmp]]= inx[i];
- counter[tmp]++;
- }
- int arrayNumber = 0;
- int inxNumber = 0;
- for (int i = 0; i <= 255; ++i) {
- while (arrayNumber != counter[i]) {
- inx[inxNumber] = array[i][arrayNumber];
- arrayNumber++;
- inxNumber++;
- }
- arrayNumber = 0;
- }
- }
- }
- /*Цифровую сортировку смотри сам, работает аналогично, сравнивая char'ы как int*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement