![]() |
|
|
![]()
|
|
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: нет Всего: 11 |
в книге "Жемчужины программирования" (Джон Бентли) описывается идея сортировки неповторяющихся чисел битовым массивом. Предлагается отсортировать телефонные номера США.
Так вот в задаче говорится что на вход поступают положителяные целые числа не превышающие N=10^7. Так вот, как я понимаю, по идее битовой сортировки, необходимо объявить массив типа TBit (0..1) диапозона [Nmin..N]. (например массив для сортировки номеров для моего города имеет вид [30000..49999]). Компилятор (BP 7) не признает числа 10^7. Как быть? И еще постоянно говорится про неограниченную опереративную память. Я пробовал использовать динамическую, но результат один - ошибка. Может кто сталкивался с проблеммой объявления больших массивов, подскажите пожалуйста (если можно с кодом на Pascal`e). Или посоветуйте каким Pascal компилятором пользоватся, если это из-за него. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: нет Всего: 55 |
Что значит не признает? Проблема именно с '10^7' или с '9999999'? Если с последним, то используй тип Longint. Если с первым, то естественно, это ведь не число а выражение с операцией возведения в степень (^) которой нет в Pascal'е. -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: нет Всего: 11 |
Я имел в виду "99999...". так как объявить такой массив, далаю так
выдает ошибку 23 (Ordinal type expected). так вот как с ней бороться? |
|||
|
||||
| chaos |
|
||||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
я делаю обычно так(правда на делфи)
Добавлено @ 16:22 А почему бы не использовать действительно БИТОВЫЙ массив:
вот допустим так мы получим 8000 бит и обращатся к каждому через and
Это сообщение отредактировал(а) chaos - 24.12.2004, 16:30 |
||||||
|
|||||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: нет Всего: 11 |
хм... попробуем...
|
|||
|
||||
| ovr2000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
Паскаль по умолчанию перечисление конвертит в integer
Посчитаем кол-во памяти 10 млн*2=20Мбайт, не говоря о том, что массив в принипе ограничен 16-битной ссылкой Т.е. массив должен быть не более 64 кбайта (а не 64к элементов) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |