|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.04.2008, 03:27 | #1 |
Пользователь
Регистрация: 19.04.2008
Сообщений: 66
|
Привет всем! Есть у меня тут такое дело. Столкнулся с проблемой :
Чё есть - 1)Дан динамический массив из целых чисел с количеством "n"; Код:
указывающие... Я сделал "перемешивание" не используя дополнительных массивов в целях экономии памяти(Пр : 1024 элементов по 4 байта и дублирующий массив, как вспомогательная переменная - многовато). -алгоритм(функция) Код:
По возможности более оптимально написать код (оптимизировать). Дело в том что этот алгоритм должен очень быстро выдавать результ. ЗЫ : Писал и с константовыми массивами, но в итоге пришёл к динамическим т.к. они более гибкие в использовании. Впитаю любые идеи...
Нет таких проблем, которых мы не можем себе создать
Последний раз редактировалось AlDelta; 26.04.2008 в 12:15. Причина: [CODE] |
26.04.2008, 10:14 | #2 |
Пользователь
Регистрация: 04.04.2008
Сообщений: 57
|
пргогнал твою прогу Вроде всё работает ,да и убрать особо нечего
попробуй с Константой.
Программированине-это не очередная пара, а искуство показать себя!!!
|
26.04.2008, 10:38 | #3 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Смотря что считать перемешиванием. Если меняем два элемента, это достаточное перемешивание ?
- Можно перемешивать сериями. Как мы тасуем колоду карт. Random'ом определяем начало серии, длину, с чем поменять и меняем сразу несколько элементов. После нескольких таких действий массив будет перемешан. - Вариант оптимизации Вашего кода. Берем элемент temp := A[Random]. Выбираем случаный элемент. Помещаем его в предыдущий (который мы запомнили в temp), новый элемент теперь свободен. В него помещаем другой. После цикла в последнюю "дырку" помещаем temp. |
26.04.2008, 21:01 | #4 | |
Пользователь
Регистрация: 19.04.2008
Сообщений: 66
|
Цитата:
меняться в пределах от [0..1024] да может даже и больше. Т.Е. константа это максимум, а это уже плохо(приходится "двигать" лимит... Двинешь в лево - мало ну т.д.). И в конце массива будет постоянно оставаться "мусор", с которым придёться бороться. Пробовал, не катит. Проблем, на самом деле, становиться только больше.
Нет таких проблем, которых мы не можем себе создать
|
|
26.04.2008, 21:06 | #5 | ||
Пользователь
Регистрация: 19.04.2008
Сообщений: 66
|
Цитата:
Цитата:
Нет таких проблем, которых мы не можем себе создать
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder | AleksP | C++ Builder | 7 | 11.04.2009 13:06 |
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует | skobets | Общие вопросы C/C++ | 2 | 03.06.2008 06:51 |
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) | Dorvir | Microsoft Office Excel | 2 | 28.03.2008 10:03 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |