Полезный алгоритм для создания индексного файла

#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. И: действительно ли символы и целые числа занимают одинаковое количество байтов в вашем файле?