#algorithm #file #indexing #binary
Вопрос:
.Здравствуйте.
Отказ от ответственности: Я не прошу код. Я пытаюсь придумать решение своей проблемы, но не могу понять алгоритм.
Моя структура-студент, со строковым именем и средним целым числом.
Допустим, у меня есть файл с именем «file1.bin», который начинается с целого числа «X», а затем строятся структуры X: целое число «Y» (длина имени), строка длины Y и целое число «среднее».
Я создал массив структур со всеми деталями в файле.
Теперь я хочу создать индексный файл, содержащий индексы учащихся, но я хочу, чтобы индексы указывали учащихся, отсортированных по среднему значению (от низкого до высокого).
В этом примере у нас есть 3 студента: Майк (80), Сэм (100), Су (70). Когда я открываю двоичный файл, у меня есть количество студентов. Вот почему мы начинаем с индекса 1. Затем я хочу получить данные Su, поэтому я перехожу к индексу 10. Затем я хочу прочитать данные Майка, поэтому я перехожу к индексу 1. Затем я хочу прочитать данные Сэма, поэтому я перехожу к индексу 6.
Теперь, отвечая на мой вопрос, как я могу сделать это эффективным? Я думал о том, чтобы добавить ценность структурам, но мне не разрешают этого делать.
Я думал о сортировке слиянием всего массива сотрудников, но я не могу придумать, куда это может меня привести.
Мне нужно рассчитать файл индексов до внесения изменений, а затем каким-то образом узнать, где должен быть размещен каждый индекс.
У кого-нибудь есть какие-нибудь идеи, как я могу это сделать?
Заранее большое спасибо.
Комментарии:
1. Я не понимаю значения вашего индекса. Если я правильно понял ваше описание и подсчитал, Майк находится в индексе 1 и занимает 6 ячеек, поэтому Сэм начинается с 7 и занимает 5 ячеек, и, наконец, Су начинается с 12 и занимает 4 ячейки. Для меня это должно быть 1, 7 и 12 вместо 1, 6 и 10.
2. И: действительно ли символы и целые числа занимают одинаковое количество байтов в вашем файле?