Забыли пароль?

Зарегистрироваться

Пузырьковая сортировка строковых данных

Прислал(а): Виталий
Новичок
КПД: 0 %
Добавлено: 2014-12-18
Просмотров: 6946
Ответов: 2

Если нужно отсортировать строковые данные по алфавиту (пусть они и на латинице), подходит ли пузырьковая сортировка? Не подскажете, как её организовать для строковых данных?


Ответы

Лучший ответ

Автор: Support
Ученик
КПД: 16.67 %
Добавлено: 2014-12-19
Ответов: 12
В том числе лучших: 2

Пузырьковая сортировка строк состоит в том, что сравниваются первые символы двух соседних строк. Если первый символ следующей по алфавиту стоит ближе к началу, чем первый символ предыдущей, то они меняются местами. За сравнение отвечает функция strcmp. А в целом принцип тот же, что и при пузырьковой сортировке числовых данных.

Вот возможный вариант сортировки данных о книгах по автору. Код функции, осуществляющей сравнение строк с фамилией автора и дальнейшую сортировку записей по всем полям, общим для объекта "книга":

for (int j=0; j<=b; j++) { for (int i=1; i<b; i++) { if (strcmp(book_arr2[i-1].author, book_arr2[i].author) > 0) { tmp0 = book_arr2[i-1].id; book_arr2[i-1].id = book_arr2[i].id; book_arr2[i].id = tmp0; strcpy(tmp1, book_arr2[i-1].author); strcpy(book_arr2[i-1].author, book_arr2[i].author); strcpy(book_arr2[i].author, tmp1); strcpy(tmp1, book_arr2[i-1].title); strcpy(book_arr2[i-1].title, book_arr2[i].title); strcpy(book_arr2[i].title, tmp1); tmp0 = book_arr2[i-1].year; book_arr2[i-1].year = book_arr2[i].year; book_arr2[i].year = tmp0; strcpy(tmp1, book_arr2[i-1].city); strcpy(book_arr2[i-1].city, book_arr2[i].city); strcpy(book_arr2[i].city, tmp1); strcpy(tmp1, book_arr2[i-1].publisher); strcpy(book_arr2[i-1].publisher, book_arr2[i].publisher); strcpy(book_arr2[i].publisher, tmp1); strcpy(tmp1, book_arr2[i-1].genre); strcpy(book_arr2[i-1].genre, book_arr2[i].genre); strcpy(book_arr2[i].genre, tmp1); strcpy(tmp1, book_arr2[i-1].description); strcpy(book_arr2[i-1].description, book_arr2[i].description); strcpy(book_arr2[i].description, tmp1); tmp0 = book_arr2[i-1].quantity; book_arr2[i-1].quantity = book_arr2[i].quantity; book_arr2[i].quantity = tmp0; } } }


Комментариев: 0
Автор: UriFastDecision
Ученик
КПД: 72.73 %
Добавлено: 2015-01-08
Ответов: 11
В том числе лучших: 8
Попробуйте также сортировку выбором - чертовски занятная штука

Комментариев: 0
Поделиться с друзьями