Ananasi0, очевидно, это задача на структуры данных и алгоритмы. У вас наивное медленное решение и его никак не ускорить. Дайте условие задачи хоть. Подозреваю, что тут может помочь дерево отрезков с отложенным изменением или алгоритм сканирующей прямой плюс какой-нибудь set.
Евгений Журов, Да, callback должен проверять только меньше. Меняя местами параметры вы можете проверять и больше. Если не меньше и не больше, то тогда оно равно.
Код приведенный Alexandroppolus с комментариями весьма понятен и читабелен. Если коллбак еще и назвать IsLessThan, тогда вообще все кристально ясно будет. А то, что ветки (равно, меньше, больше) местами переставлены нисколько не усложнаяет алгоритм бинпоиска.
LinuxGod, давайте код хедера. Судя по всему, у вас разные объектники с этим хедером собираются с разными флагами, из-за чего получаются 2 разных определения
ivanesc3nce, Ну тогда или pthread_cancel используйте (но это плохая практика), или надо какие-то события использовать чтобы сообщить всем потокам, что пора прекращаться. Тогда все те потоки могут сделать pthread_detach() и return-уться наружу. Ну или основной поток будет всегда делать join и тогда остальные потоки не должны вызывать detach.
Это внутренний цикл, его надо сколько-то раз повторить. Можно хоть NM раз - будет не совсем оптимально. Можно циклом задом-наперед также отсчитывать индесксы конца и в этом цикле break-аться если дошли до конца.
Dmitriy_Gultiaev, Бред какой-то. Ну тогда вместо явного преобразования индексов расписывайте руками.
Допустим, сортировка выбором: пишите два цикла (сначала по строке, потом по столбцу), которые перебирают текущую заполняемую позицию. Затем сначала ищите минимум в текущем столбце, потом во всех остальных столбцах справа. Потом этот минимум меняете местами с текущим элементом.
Т.е. вместо двух циклов по i, которое раскалывается на i%M и i/M вы пишите 2 цикла по k и j так, чтобы они проходили те же числа в той же полседовательности.
Пузырек делается также. Два цикла в нужном порядке обходят весь массив. Меняете текущий элемент с элеменом ниже, если они не в том порядке. Если же текущий элемент - самый нижний, то сравнивайте и меняйте с первым элементом в следующей строке. Можно вместо if-ов гнать цикл до M-1 а не до M и отдельно обрабатывать этот самый самый нижний элемент в столбце.
Фактически, алгоритм будет делать тоже самое, что и с преобразованием индексов, но формально там будут 2 прямо использоваемых индекса.
Михаил Ксенофонтов, Все еще не понятна ваша задача. Ясно что вы хотите как-то числа преобразовать, но вообще непонятно, как именно. Опишите хотя бы искомые свойства преобразования. Какова его цель вообще. Чем вам не подойдет преобразовывать все числа к 42 (потому что число красивое)? Чем не подходит идентичное преобразование (каждое число заменяется само на себя)?
Ogurchik-007, переместите srand в main. Это инициализация генератора случайных чисел. Если вызывать его для каждой строки, то с большой вероятностью время системное будет таким же для соседних строк (точность не такая большая, что бы каждые несколько инструкций тикать), а значит генераторы будут одинаково иниуиализированны и будут авдавать лдинаковые последовательности.
Ogurchik-007, я думаю - нет. Я думаю это вы откуда-то списали, но ничего не поняли и теперь просите интернет решить задание за вас. Если я ошибаюсь - то извините. Загрузите фотографию учебника куда-нибудь и я вам помогу в этом разобраться.