реклама на сайте
подробности

 
 
> Сортировка файлов директории по алфавиту, с использованием минимума оперативы
sonycman
сообщение Mar 6 2007, 01:45
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Имеется SAM7 c какой-либо файловой системой. Возможно, с поддержкой длинных имён.
Есть директория с файлами.
Хочется открывать файлы из этой директории строго в алфавитном порядке, но как это сделать?

Можно-ли создать сортированный список файлов, используя минимум оперативной памяти?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Mar 6 2007, 13:01
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Stanislav @ Mar 6 2007, 04:15) *
"Пузырьковое всплытие". Накладных расходов памяти (кроме собственно списка) нет. Для дальнейшей экономии ОЗУ можно составлять и сортировать список не имён файлов, а их порядковых номеров в директории.
Если элементов немного - метод работает не слишком тормознО. smile.gif

А что это за метод "пузырькового всплытия"?
Замена имён файлов их порядковыми номерами интересна, но как тогда открывать файл, имея только его номер? Перебором всех файлов, находящихся до него?
Цитата(KRS @ Mar 6 2007, 13:17) *
Если минимум памяти и список не хранить то перебором.
1 находим самый первый по алфавиту файл (перебором всего каталога)
2 находим самый первый но больше предыдущего ....
накладных расходов по памяти - хранить предыдущий открытый и текущий минимальный
но конечно скорость маленькая будет каждый раз перебирать.

Тоже пришёл к подобному решению. Скорость, конечно, будет не ахти...

В принципе, список можно сохранить в отдельном файле, тогда туда влезут все даже самые длинные имена и кол-во файлов не будет иметь значения.
А потом работать уже в соответствии с этим файлом...
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Mar 7 2007, 00:21
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(sonycman @ Mar 6 2007, 13:01) *
А что это за метод "пузырькового всплытия"?..
Ну, это, пожалуй, самый тупой метод сортировки. smile.gif Занимает минимум памяти как программ, так и данных.
Суть в следующем: берутся первый и второй элемент списка. Сравниваются. Если второй меньше - меняются местами. Затем второй и третий, и т.д. Операция повторяется, пока не прекратятся перестановки.
Кол-во операций перестановки в худшем случае - (N-1)!, где N - число элементов списка, ! - знак факториала. smile.gif
Если кол-во файлов в директории больше десятка, лучше поискать другой способ. Например, который уже предложили: выбираете мин. элемент, далее следующий из оставшихся, и т.д.
Для ускорения операции перестановки, в памяти лучше хранить порядковые номера (тэги, или индексы) элементов списка, и переставлять именно их.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 05:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016