Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2010, 21:16   #1
oniya
Новичок
Джуниор
 
Регистрация: 19.08.2010
Сообщений: 1
Радость Блочная сортировка

Здравствуйте!
Есть задание по курсовой работе.
Трудность в следующем:не понятен алгоритм выполнения.Что нужно делать сначала,что потом?
если можете напишите.Код не нужен)
Просто по пунктам что за чем следует.
Вот собственно само задание:
Реализовать блочную сортировку некоторого файла большого размера. Файлы создаются случайным образом и состоят из одного числового поля и одного строкового. Определить диапазон значений и диапазон для каждого блока. При чтении файла разбивать его на блоки, состоящие из двусвязных линейных списков с головой. Голова хранит указатель на первый и последний элементы списка. Затем методом включений отсортировать каждый список в порядке возрастания. Слить все списки в файл, получив упорядоченную последовательность. Предусмотреть работу в меню. Создать класс обработки списков.

Заранее спасибо.
oniya вне форума Ответить с цитированием
Старый 19.08.2010, 22:58   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Допустим структура файла состоит из записей с полями (int A, char B[10])
1) сначала определяемся как будем сравнивать, то есть как определить какая из записей больше. Например, запись больше если числовое поле больше, в случае равенства числовых полей, большей записью будет та у которой строковое поле длиннее.
2) находим минимальную(X) и максимальную(Y) запись в файле, получаем что диапазон значений равен [X, Y]
3) выбираем количество блоков исходя из разумности для данной задачи, например, пусть их будет 20. Создаем 20 списков. Делим диапазон значение на 20 одинаковых отрезков (или примерно одинаковых отрезков).
То есть при чтении файла в первый блок засовываем те записи, кто мало отличается от минимальной (не более чем на 1/20 диапазона), во второй - тех кто чуть больше отличается от минимальной (более чем на 1/20 и не более чем на 2/20 диапазона) и т.д.
4) Теперь каждый список сортируем любым способом (по заданию методом включения)
5) Теперь записываем 1-ый список в фай, затем второй, третий и т.д. Всё, файл отсортирован
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32
Delphi Блочная запись Pord Помощь студентам 2 08.11.2008 10:57
Блочная верстка Demonichka HTML и CSS 2 12.07.2008 01:31