![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 31.10.2010
Сообщений: 5
|
![]()
Моделирование работы планировщика потоков ОС.
Есть два массива - отсортированный по возрастанию массив с потоками (время, которое нужно программе на выполнение) и массив с ресурсами центрального процессора. Программа должна расположить потоки из первого массива в порядке их обработки центральным процессором (Алгоритм выбора очередного потока на исполнение состоит в выборе потока, который имеет максимально близкое время работы к выделенному кванту времени). На выходе программы получается последовательность, которая задаёт порядок выполнения потоков центральным процессором. Вся сложность в том, что поиск наиболее подходящего потока должен быть осуществлен способом под названием "Бинарный поиск". Пожалуйста, помогите. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 29.12.2009
Сообщений: 1,166
|
![]()
почитай википедию, там толково написано про такой поиск
смотри, например, у нас имеется некая последовательность объектов (в нашем случае тип int) Код:
из этой последовательности нужно найти элемент (т.е. возвратить на него указатель допустим) сначало нам нужно отсортировать этот массив получим Код:
получаем длинну массива N возьмем элемент в центре массива, т.е. c = (N % 2) = 8 % 2 = 4 сравним с икомым F т.е. элемент массива под индексом 4 это число 5 а т.к. искомое число 0 и оно меньше 5, то ищем теперь в левой половине массива, т.е. среди элементов от нулевого индекса до 4-го и так каждый раз обратно берем элемент из центра и сравниваем, если искомое больше чем в центре, то ищем правее, и наоборот надеюсь понятно :DDD
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть] |
![]() |
![]() |
![]() |
#3 |
Регистрация: 31.10.2010
Сообщений: 5
|
![]()
Да это то я конечно знаю. Дело в том, что нужно всегда выбирать наибольший из подходящих, к тому же, два раза один и тот же поток выбирать , естественно, нельзя. Конечно, можно запилить проверку, которая распознает, брали ли мы этот поток или нет, но тогда вся эффективность бинарного поиска (а именно - время его выполнения) сойдет на нет, разве не так?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 18.08.2010
Сообщений: 140
|
![]()
RUSt88, да это вроде метод деления отрезка пополам
![]()
Люди бывают десяти типов: те, кто знают двоичную систему, и те, кто нет
|
![]() |
![]() |
![]() |
#5 | |
Участник клуба
Регистрация: 29.12.2009
Сообщений: 1,166
|
![]() Цитата:
или вы шутите?
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть] |
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарный поиск в массиве | Driver_09 | Помощь студентам | 8 | 28.05.2010 15:53 |
Бинарный поиск | CraZZZy-GameRRR | Общие вопросы Delphi | 8 | 25.05.2010 14:57 |
Бинарный поиск | 0IceCube0 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.04.2010 15:52 |
Бинарный поиск | Gendalf | Помощь студентам | 1 | 07.07.2007 22:09 |