Скачать презентацию Сортировка данных со сложной структурой Пусть массив А Скачать презентацию Сортировка данных со сложной структурой Пусть массив А

6.3 сложные структуры.pptx

  • Количество слайдов: 4

Сортировка данных со сложной структурой Пусть массив А – телефонный справочник. А: Иванов Петров Сортировка данных со сложной структурой Пусть массив А – телефонный справочник. А: Иванов Петров Абрамов 223322 345767 … 667891 Чтобы отсортировать такой массив, нужно определить отношение порядка его элементов. struct abonent { char name[10]; long phone; } A[n]; DO ( i : = 1, 2, …, n-1) DO ( j : = n, n-1, …, i+1) IF ( Aj < Aj-1 ) Aj ↔ Aj-1 FI OD Эта запись не будет верной, т. к. компилятор не знает как сравнивать элементы типа abonent , т. к. они не являются встроенными элементами языка.

 •

При сортировке по сложному ключу также легко определить функцию: Int Less ( struct abonent При сортировке по сложному ключу также легко определить функцию: Int Less ( struct abonent X, struct abonent Y) { if ( X. name < Y. name) return 1; else if ( X. name > Y. name) return 0; else if ( X. phone < Y. phone) return 1; else return 0; } Тогда в сортировке: DO ( i : = 1, 2, …, n-1) DO ( j : = n, n-1, …, i+1) IF ( Less(Aj , Aj-1 ) ) Aj↔Aj-1 FI OD OD

Вывод: Если структура сортируемых данных не соответствует простым (встроенным) типам языка, то операции отношения Вывод: Если структура сортируемых данных не соответствует простым (встроенным) типам языка, то операции отношения переопределяются с помощью соответствующих булевых функций. Замечания: 1) Аналогичное переопределение операций сравнения нужно и для организации поиска. 2) Операции отношения могут быть определены разными способами в зависимости от ключа сортировки и условия упорядочения данных. 3) Изменение направления упорядочения массива легко достигается с помощью замены операции отношения на противоположную: < на >, ≤ на ≥ Операция пересылки не требует переопределения и выполняется путем побайтового копирования данных.