Форум программистов, компьютерный форум CyberForum.ru

Поиск min и max - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа со стеком (вытащить значение и сохранить в переменную) http://www.cyberforum.ru/cpp-beginners/thread1162651.html
Привет всем! Пишу я лабораторку по моделированию систем. И столкнулся с проблемой вытаскивания значений из стека и сохранение в переменную. Как можно это реализовать? З.Ы Переменная в последствии будет использоваться для сравнения. Пока что у меня как то так :/ #include<iostream> #include<math.h> #include<conio.h> #include<time.h> #include<vector>
C++ Повторный запуск main() равен перезапуску программы? Добрый день. Если в коде какой либо функции я вызову main() c которой у меня начинается выполнение программы, то будет ли это равно перезапуску программы(освобождение всей используемой до этого памяти и т.д) и если нет, то каким образом в коде можно прописать, чтобы программа запустилась заново? С освобождением все занятой до этого памяти и уничтожением всех созданных объектов? Среда разработки... http://www.cyberforum.ru/cpp-beginners/thread1162644.html
C++ Как сделать так, чтобы значения экземпляров класса не повторялись
Я пытаюсь написать игру 2048. Коротко об игре, для тех кто не знает: Есть поле 4х4 в нем появляются на случайной позиции квадратики с значением 2 или 4, используя клавиши вправо,влево,вверх,вниз то эти квадратики перемещаются в заданном направлении,если два квадратика с одинаковым значением столкнутся,то они сольются в единый квадрат с значением в 2 раза больше. При каждом движении,...
C++ Считывание из текстового файла
Всем привет. У меня есть текстовый файл в котором, к примеру записана информация:"Фамилия Имя". Как мне из этого файла по словно считать информацию в переменные, то есть что бы переменные а="Фамилия", b="Имя".
C++ Изменение размера массива http://www.cyberforum.ru/cpp-beginners/thread1162616.html
Допустим в main-е я объявил указатель определенного типа и создал переменную int size, затем адрес указателя и переменной size передаю первую функцию. В ней меняется значение переменной size и объявляется массив динамический массив, адрес которого совпадает с указателем, который я передал. Массив имеет размер size. Всё это возвращается в main, а затем передается в другую функцию, массив очищается...
C++ Разработать метод, который нечетное число заменяет на 0,а четное число уменьшает в два раза Разработать метод f (х) , который нечетное число заменяет на 0, а четное число уменьшает в два раза. Продемонстрировать работу данного метода на примере. подробнее

Показать сообщение отдельно
NEvOl
12 / 11 / 0
Регистрация: 13.08.2012
Сообщений: 616
30.04.2014, 21:35  [ТС]     Поиск min и max
блин все равно очень медленно получается, вот написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
for(int i = 0; i < num; i++)
            {
                int Cl = i;//число элементов в левом подмассиве
                int Cr = num-i-1;//число элементов в правом подмассив
                float ldx, ldy, ldz, Vl;
                if(Cl > 0)
                {
                    photon minx = *std::min_element(x, x+Cl, myobjx);//минимальный элемент левого подмассива по оси х
                    photon maxx = *std::max_element(x, x+Cl, myobjx);//максимальный элемент....
 
                    photon miny = *std::min_element(x, x+Cl, myobjy);//....
                    photon maxy = *std::max_element(x, x+Cl, myobjy);//....
 
                    photon minz = *std::min_element(x, x+Cl, myobjz);//....
                    photon maxz = *std::max_element(x, x+Cl, myobjz);//...
 
                    ldx = abs(minx.pos.x - maxx.pos.x);//находим максимальное расстояние между элементами по оси х
                    ldy = abs(miny.pos.y - maxy.pos.y);//...
                    ldz = abs(minz.pos.z - maxz.pos.z);//...
    
                    Vl = max(ldx,1)*max(ldy,1)*max(ldz,1);//находим объем
                }
                else
                    Vl = 0;
 
                float rdx, rdy, rdz, Vr;//идентичные действия с правым подмассивом
                if(Cr > 0)
                {
                    photon minx = *std::min_element(x+Cl+1, x+Cr, myobjx);
                    photon maxx = *std::max_element(x+Cl+1, x+Cr, myobjx);
 
                    photon miny = *std::min_element(x+Cl+1, x+Cr, myobjy);
                    photon maxy = *std::max_element(x+Cl+1, x+Cr, myobjy);
 
                    photon minz = *std::min_element(x+Cl+1, x+Cr, myobjz);
                    photon maxz = *std::max_element(x+Cl+1, x+Cr, myobjz);
 
                    rdx = abs(minx.pos.x - maxx.pos.x);
                    rdy = abs(miny.pos.y - maxy.pos.y);
                    rdz = abs(minz.pos.z - maxz.pos.z);
 
                    Vr = max(rdx,1)*max(rdy,1)*max(rdz,1);
                }
                else
                    Vr = 0;
                vvh a;
                a.ind = i;//считаем формулу и сохраняем
                float lVVh = ((Cl * Vl)/Vd);
                float rVVh = ((Cr * Vr)/Vd);
                a.VVH = 0+lVVh+rVVh;
                VVH.push_back(a);
            }
код работает, но недопустимо долго, подскажите пожалуйста как его можно оптимизировать, я как понимаю основное время занимает поиск минимальных и максимальных элементов ?

Добавлено через 4 часа 39 минут
замерил время выполнения одной итерации цикла выходит около 0.016 секунды, при условии что num будет равна 262000 на прохождение цикла уйдет почти целый час, как ускорить подскажите ?
 
Текущее время: 21:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru