Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/64: Рейтинг темы: голосов - 64, средняя оценка - 4.91
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32

Найти минимум в массиве используя наиболее оптимальный алгоритм

03.08.2016, 22:30. Показов 15333. Ответов 186
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив чисел, надо найти минимум. Препод сказал - дополнительное задание: предложить наиболее оптимальный алгоритм, написать код, реализующий его идею, и обосновать его теоретически.
4
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.08.2016, 22:30
Ответы с готовыми решениями:

Используя Linq найти минимум и максимум в массиве.
Привет! У меня вопрос...для C#... Пример: int n=int.Parse(Console.ReadLine()); int arr=new int; for(int i=0;i<n;i++) { ...

Найти среднее арифметическое, максимум, минимум в массиве, используя функции пользователя.
Дан массив чисел. Найти среднее арифметическое, максимум, минимум используя функции пользователя. Сделать, чтобы работала для массива из...

В массиве A(m,n) в каждом столбце найти минимум, умножить каждый минимум на 5 и найти произведение этих чисел.
В массиве A(m,n) в каждом столбце найти минимум, умножить каждый минимум на 5 и найти произведение этих чисел. помогите решить задачу...

186
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
05.08.2016, 19:12
Студворк — интернет-сервис помощи студентам
ValeryS, очень жизненный пример, в котором надо искать мин/макс в цикле, а статистику ты неправильно посчитал
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
05.08.2016, 19:20
Да, оказалось, что в среднем одинаковое количество сравнений. Различия имеют в худшем случае.

Добавлено через 4 минуты
ct0r, я более тщательно посчитал мат. ожидание количества сравнений, нежели ValeryS, но действительно получил 3 сравнения на пару в среднем.
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.08.2016, 19:55
HenryDukart, мне Ваш алгоритм нравится. Я вот тут как смог написал два варианта сортировки с алгоритмом предложенным Вами (если я правильно его понял и не переусложнил) и алгоритмом простого else то есть в сортировке с выбором не пары но или-или. Количество итераций вдоль одинаково, а вот количество сравнений в моём случае более чем вдвое меньше. Счетчики тупо фиксируют ветвь после сравнения и нет нужды вычислять сколько сравнений на сравнение получается вдоль ветвей потока исполнения.
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
using namespace std;
 
size_t iteration_count(0), comparison_count(0);
 
template<typename T>
void biselectional_sort_henry(T* ar, size_t len)
{
size_t left_ind=0, right_ind=len-1;
size_t  min_val_ind=left_ind, max_val_ind=right_ind;
comparison_count=0;
int temp_int;
 
if(len>1)
do
{
max_val_ind=right_ind;
min_val_ind=left_ind;
iteration_count++;
//////////
for(size_t i=left_ind+1; i<right_ind-1; i+=2)
{
if(ar[i]!=ar[i+1])
{
comparison_count++;
if(ar[i]>ar[i+1])
{
comparison_count++;
if(ar[max_val_ind]<ar[i])
{
comparison_count++;
max_val_ind=i;
}
if(ar[min_val_ind]>ar[i+1])
{
comparison_count++;
min_val_ind=i+1;
}
}
else
{
if(ar[max_val_ind]<ar[i+1])
{
comparison_count++;
max_val_ind=i+1;
}
if(ar[min_val_ind]>ar[i])
{
comparison_count++;
min_val_ind=i;
}
}
}
else
{
if(ar[max_val_ind]<ar[i])
{
comparison_count++;
max_val_ind=i;
}
else
if(ar[min_val_ind]>ar[i])
{
comparison_count++;
min_val_ind=i;
}
}
}
/////////////
temp_int=ar[left_ind];
ar[left_ind++]=ar[min_val_ind];
ar[min_val_ind]=temp_int;
 
temp_int=ar[right_ind];
ar[right_ind--]=ar[max_val_ind];
ar[max_val_ind]=temp_int;
}
while(left_ind<right_ind);
}
 
template<typename T>
void biselectional_sort(T* ar, size_t len)
{
size_t left_ind=0, right_ind=len-1;
size_t  min_val_ind=left_ind, max_val_ind=right_ind;
comparison_count=0;
 
int temp_int;
 
if(len>1)
do
{
max_val_ind=right_ind;
min_val_ind=left_ind;
iteration_count++;
for(size_t i=left_ind+1; i<right_ind+1; ++i)
{
if(ar[max_val_ind]<ar[i])
{
max_val_ind=i;
comparison_count++;
continue;
}
 
if(ar[min_val_ind]>ar[i])
{
comparison_count++;
min_val_ind=i;
continue;
}
}
temp_int=ar[left_ind];
ar[left_ind++]=ar[min_val_ind];
ar[min_val_ind]=temp_int;
 
temp_int=ar[right_ind];
ar[right_ind--]=ar[max_val_ind];
ar[max_val_ind]=temp_int;
}
while(left_ind<right_ind);}
 
int main(int argc, char* argv[])
{
    int ar[]=
    {
        2,1,5,3,7,4,8,11,90,9
    };
    int ar_copy[]=
    {
        2,1,5,3,7,4,8,11,90,9
    };
    size_t len=sizeof(ar)/sizeof(ar[0]);
biselectional_sort_henry(ar, len);
cout<<"The array with size of "<<len<<" was sorted with "<<comparison_count<<" comparisons\n";
cout<<"made while "<<iteration_count<<" iterations\n";
for(size_t i=0; i<len; ++i)cout<<ar[i]<<" ";
cout<<endl;
 
biselectional_sort(ar_copy, len);
cout<<"The array with size of "<<len<<" was sorted with "<<comparison_count<<" comparisons\n";
cout<<"made while "<<iteration_count<<" iterations\n";
for(size_t i=0; i<len; ++i)cout<<ar_copy[i]<<" ";
cout<<endl;
system("pause");
return 0;
}
Может чего не так сделал? Но не со зла это. Пишите, - исправлю.
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
05.08.2016, 19:57
Цитата Сообщение от HenryDukart Посмотреть сообщение
действительно получил 3 сравнения на пару в среднем
Так и должно быть. Вчера по вашей наводке на СО видел обсуждение задачи в стиле олимп.решения поиска мин+макс. Там было обоснование с отсылкой на какую-то главу Кнута что мол число сравнений должно быть 3N/2
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.08.2016, 20:04
Цитата Сообщение от IGPIGP Посмотреть сообщение
Может чего не так сделал?
угу не обнулил
iteration_count=0; в начале второй функции и получил в ней 10 итераций тогда как в первой их 5. Хотя ясно что по 5 в обеих.
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
05.08.2016, 21:45
HighPredator, этот алгоритм я видел в Кормэн "Алгоритмы: построение и анализ". Действительно сравнений 3*(n/2), потому что для обработки одной пары используется три сравнения. Сейчас я думаю, можно ли применить способ IGPIGP, для уменьшения числа сравнений.

Добавлено через 36 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
if(ar[i]!=ar[i+1])
Вот этого точно не надо делать. Потому что при равенстве будет 3 сравнения на пару, а при не равенстве — 4.

Добавлено через 17 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
for(size_t i=left_ind+1; i<right_ind-1; i+=2)
С четностью длины массива еще есть небольшая "трабла".
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.08.2016, 22:22
Цитата Сообщение от HenryDukart Посмотреть сообщение
С четностью длины массива еще есть небольшая "трабла".
Посмотрю. Спасибо.

Добавлено через 28 минут
Цитата Сообщение от HenryDukart Посмотреть сообщение
С четностью длины массива еще есть небольшая "трабла".
заремил последний элемент ( 9 осталось ) и всё равно работает. Надо что-то ещё придумать. Чуть позже вернусь к этому. Раз Вы говорите, что её можно завалить, я полон решимости это сделать.
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
05.08.2016, 22:29
Цитата Сообщение от IGPIGP Посмотреть сообщение
Раз Вы говорите, что её можно завалить, я полон решимости это сделать.
C++
1
2
3
4
    int ar[] =
    {
        2,1,5,3,7,4,8,11,9
    };
1
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
05.08.2016, 22:51
Вот Решил повелосипедить, и что из этого получилось...
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
#include <iostream>
#include <vector>
using namespace std;
 
inline vector<int>& f_findMin(vector<int>& vec)
{
    if (vec.size() == 1)
        return vec;
 
    for (size_t i(0), size(vec.size() - 1); i <= size / 2; ++i)
        vec[i] = vec[i] < vec[size - i] ? vec[i] : vec[size - i];
 
    vec.resize((vec.size() + 1) / 2);
 
    return f_findMin(vec);
}
 
int main()
{
    vector<int> xxx
    {
        1, 5, 2, 6, 10, 3, 7, 4, 8, 9
    };
 
    cout << f_findMin(xxx)[0] << endl;
    system("pause");
}
Добавлено через 9 минут
число сравнений: n плюс/минус 1
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.08.2016, 23:22
Цитата Сообщение от HenryDukart Посмотреть сообщение
2,1,5,3,7,4,8,11,9
Вижу. Это как раз функция в которой я попытался отразить своё понимание предложенного Вами алгоритма на службе у сортировки. И оно сработало для заданных условий.
Посмотрим.
А моя работает.
Тут что-то с итерацией по 2. Я это вижу. В конце она запросто может не сойтись и следовательно нужны ещё сравнения. А их и так у Вашего Варианта многовато.
HenryDukart, Вы на чьей стороне? На моей или Кормэна своей? Попробуйте её (функцию) подрехтовать, чтобы снизить количество сравнений и устранить ошибку с итерацией по два. Или напишите свой вариант с нуля. Я тоже со своей стороны постараюсь, но я даже не уверен, что я написал что-то в духе Вашего алгоритма.
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
05.08.2016, 23:40
Цитата Сообщение от IGPIGP Посмотреть сообщение
А их и так у Вашего Варианта многовато.
Почему же многовато? Уберите сравнение на равенство, о котором я писал выше, и на первоначальном примере разница составит одно сравнение в вашу пользу.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Вы на чьей стороне? На моей или Кормэна своей?
Я за вас, потому что мне кажется, что Кормэн сюда впихивается с треском. Конечно, его можно применить, но больше будет if.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Попробуйте её (функцию) подрехтовать, чтобы снизить количество сравнений и устранить ошибку с итерацией по два.
Пробую. Посмотрим, что выйдет.

Цитата Сообщение от IGPIGP Посмотреть сообщение
я даже не уверен, что я написал что-то в духе Вашего алгоритма
Нет, вы правильно поняли.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.08.2016, 00:39
Цитата Сообщение от HenryDukart Посмотреть сообщение
Уберите сравнение на равенство,
Тогда что-то далее придётся менять. Кажется. Ведь при равенстве (наличии последовательного повтора) не сработает ни один вариант и не максимум ни минимум не присвоятся границам. Надо подумать.
Цитата Сообщение от HenryDukart Посмотреть сообщение
Я за вас
Плюс в том, что тогда мы точно победим. Но завтра.
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
06.08.2016, 00:43
IGPIGP, происходит неправильный подсчет числа сравнений. Счетчик увеличивается, только если результат истина. А то я смотрю, что маловато сравнений.

Добавлено через 3 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
Ведь при равенстве (наличии последовательного повтора) не сработает ни один вариант и не максимум ни минимум не присвоятся границам.
При равенстве

C++
1
2
3
4
5
6
7
8
if (ar[i] < ar[i+1])
{
//не сработает
}
else
{
//сработает
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.08.2016, 00:44
Цитата Сообщение от HenryDukart Посмотреть сообщение
происходит неправильный подсчет числа сравнений. Счетчик увеличивается, только если результат истина.
Может быть. Я вроде во всех ветках положил счётчики. Там же если ложь то в другом месте истина, хотя стоп... если они подряд то да. Надо как-то так сделать:
C++
1
if(count++ && (действующее условие))
а счётчик с единицы начать. Потом в конце её отбросить.
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
06.08.2016, 00:45
IGPIGP, просто перед if увеличить счетчик.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.08.2016, 00:54
Цитата Сообщение от HenryDukart Посмотреть сообщение
При равенстве
Нет. Там логика именно для ar[i] > ar[i+1] в той ветке else. Eсли равно надо и для минимума и для максимума с одним и тем же индексом работать.

Добавлено через 3 минуты
Цитата Сообщение от HenryDukart Посмотреть сообщение
IGPIGP, просто перед if увеличить счетчик.
- Ты знал! - Ты знал!
Всё, - спать-спать-спать. До завтра, HenryDukart, рад был пообщаться.
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
06.08.2016, 02:16
IGPIGP, спокойной ночи. И мне было приятно.

Добавлено через 49 минут
IGPIGP, заметил ошибочку в алгоритме сортировки. На входном массиве {2, 1} перед обменом значений в конце цикла do { } while переменные min_val_ind и max_val_ind будут обе указывать на единицу. Результат же будет верный.

В общем случае же может оказаться ситуация, что после первой перестановки индекс максимального элемента будет неверным. Пример: {2, 0, 0, 1}. Результат сортировки: {0, 0, 2, 1};

Добавлено через 26 минут
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <iostream>
using namespace std;
 
size_t comparison_count(0);
 
template<typename T>
void biselectional_sort_henry(T ar[], size_t len)
{
    comparison_count = 0;
 
    size_t  left_ind = 0, right_ind = len - 1,
            max_val_ind, min_val_ind;
    T temp_val;
    bool is_even = (len % 2 == 1 ? false : true);   //четная ли длина массива
 
    if (len <= 1)
        return;
 
    do
    {
        if (!is_even)
            min_val_ind = max_val_ind = left_ind;
        else
        {
            ++comparison_count;
            if (ar[left_ind] < ar[left_ind + 1])
            {
                min_val_ind = left_ind;
                max_val_ind = left_ind + 1;
            }
            else
            {
                min_val_ind = left_ind + 1;
                max_val_ind = left_ind;
            }
        }
 
        for (size_t i = left_ind + 1 + is_even; i < right_ind; i += 2)
        {
            ++comparison_count;
            if (ar[i] > ar[i + 1])
            {
                ++comparison_count;
                if (ar[max_val_ind] < ar[i])
                    max_val_ind = i;
 
                ++comparison_count;
                if (ar[min_val_ind] > ar[i + 1])
                    min_val_ind = i + 1;
            }
            else
            {
                ++comparison_count;
                if (ar[max_val_ind] < ar[i + 1])
                    max_val_ind = i + 1;
                
                ++comparison_count;
                if (ar[min_val_ind] > ar[i])
                    min_val_ind = i;
            }
        }
 
        if (max_val_ind == left_ind)
            max_val_ind = min_val_ind;
 
        temp_val = ar[left_ind];
        ar[left_ind++] = ar[min_val_ind];
        ar[min_val_ind] = temp_val;
 
 
        temp_val = ar[right_ind];
        ar[right_ind--] = ar[max_val_ind];
        ar[max_val_ind] = temp_val;
 
    } while (left_ind < right_ind);
}
 
template<typename T>
void biselectional_sort(T* ar, size_t len)
{
    size_t left_ind = 0, right_ind = len - 1;
    size_t  min_val_ind, max_val_ind;
    comparison_count = 0;
 
    int temp_int;
 
    if (len>1)
        do
        {
            min_val_ind = max_val_ind = left_ind;
 
            for (size_t i = left_ind + 1; i <= right_ind; ++i)
            {
                comparison_count++;
                if (ar[max_val_ind]<ar[i])
                {
                    max_val_ind = i;
                    continue;
                }
                
                comparison_count++;
                if (ar[min_val_ind]>ar[i])
                {   
                    min_val_ind = i;
                    continue;
                }
            }
 
            if (max_val_ind == left_ind)
                max_val_ind = min_val_ind;
 
            temp_int = ar[left_ind];
            ar[left_ind++] = ar[min_val_ind];
            ar[min_val_ind] = temp_int;
 
            temp_int = ar[right_ind];
            ar[right_ind--] = ar[max_val_ind];
            ar[max_val_ind] = temp_int;
        } while (left_ind<right_ind);
}
 
int main(int argc, char* argv[])
{
    int ar[] =
    {
        2, 1, 5, 3, 7, 4, 8, 11, 90, 9
    };
    int ar_copy[] =
    {
        2, 1, 5, 3, 7, 4, 8, 11, 90, 9
    };
    size_t len = sizeof(ar) / sizeof(ar[0]);
    biselectional_sort_henry(ar, len);
    cout << "The array with size of " << len << " was sorted with " << comparison_count << " comparisons\n";
    for (size_t i = 0; i<len; ++i)cout << ar[i] << " ";
    cout << endl;
 
    biselectional_sort(ar_copy, len);
    cout << "The array with size of " << len << " was sorted with " << comparison_count << " comparisons\n";
    for (size_t i = 0; i<len; ++i)cout << ar_copy[i] << " ";
    cout << endl;
    system("pause");
 
    return 0;
}
1
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
06.08.2016, 07:55
Цитата Сообщение от HenryDukart Посмотреть сообщение
ct0r, я более тщательно посчитал мат. ожидание количества сравнений, нежели ValeryS, но действительно получил 3 сравнения на пару в среднем.
Видимо так. Я просто привык считать худший случай в силу специфики своей предметной области
Кстати в STL есть такой алгоритм - minmax_element.
Причем вначале предлагалось сделать ограничение на худший случай максимум 2n-2 сравнений: http://citeseerx.ist.psu.edu/v... 1&type=pdf
Но потом видимо посчитали, что это дает право на неэффективную реализацию, и ужесточили требование до (3/2)(n-1), фактически заставив этим реализовывать попарный алгоритм.
http://www.open-std.org/jtc1/s... 5.html#715
1
Объявлятель переменных
 Аватар для SpBerkut
1225 / 411 / 321
Регистрация: 24.09.2011
Сообщений: 1,279
06.08.2016, 08:53
Конструёвина.
C++
1
2
3
4
double gM(double *A, int N) {
    int M=N/2,X,Y;
    return(N==1?A[0]:N==2?A[A[0]>A[1]]:(X=gM(A,M))<(Y=gM(A+M,N-M))?X:Y);
}
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
06.08.2016, 09:02
На счет начальной задачи
Цитата Сообщение от _Ivana Посмотреть сообщение
Дан массив чисел, надо найти минимум. Препод сказал - дополнительное задание: предложить наиболее оптимальный алгоритм
Здесь был предложен вариант:
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
3
4
int min=arr[0];
for(int i=1;i<sizeof(arr)/sizeof(arr[0]);i++)
if(arr[i]<min)
min=arr[i];
Всё верно, меньше чем за один проход массива найти минимальный элемент невозможно.
Но "препод" сказал, что "можно быстрее".
Действительно, быстрее можно, если не просчитывать размер массива в каждой итерации, а найти его до цикла, например так:
C++
1
2
3
4
5
int min = arr[0];
int size = sizeof(arr)/sizeof(arr[0]);
for(int i = 1; i<size; i++)
if(arr[i]<min)
min=arr[i];

По поводу одновременного поиска минимального и максимального значений.
О чём Вы всю ночь рассуждали?
Единственный, способ оптимизации состоит в том, что не нужно max сравнивать с теми значениями, которые оказались меньше, чем min.
Например, так:
C++
1
2
3
4
5
6
7
8
int min = min(arr[0],arr[1]);
int max = max(arr[0],arr[1]);
int size = sizeof(arr)/sizeof(arr[0]);
for(int i = 2; i<size; i++)
   if(arr[i]<min)
   min=arr[i];
   else if (arr[i]>max)
    max=arr[i];
Здесь сравнение arr[i]>max проверяется только тогда, когда не выполняется arr[i]>max.
Количество сравнений зависит от расположения элементов в массиве.
Так, для массива 1,2,3,4,5 имеем всего 5 сравнений (включая два сравнения до цикла)
А для массива 5,4,3,2,1 имеем уже 8 сравнений.

Или я не прав?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2016, 09:02

В массиве а ( m, n ) в каждом столбце найти минимум, вывести эти минимумы в линейный массив, умножить каждый минимум на 5 и найти произведение
В массиве а (m, n) в каждом столбце найти минимум, вывести эти минимумы в линейный массив, умножить каждый минимум на 5 и найти...

Необходимо поменять местами минимум и максимум в массиве, используя функции
В общем, не могу разобраться что не так в функции min_ar и max_ar, сама программа запускается но после ввода массива выдает...

Используя EXTREMUM найти все опорные планы и оптимальный план
Для задач линейного программирования геометрическим методом с помощью программы EXTREMUM найти все опорные планы и оптимальный план.

Нарисовать статичную картинку, используя минимум 5 цветов, минимум 30 объектов
Нарисовать статичную картинку, используя минимум 5 цветов, минимум 30 объектов (линии, прямоугольники и др.) и содержащую текст.

Найти максимум и минимум НЕ используя оператор IF
Нужно ввести 2 вещественных числа и определить, какое из них максимальное, а какое минимальное, не используя оператор IF/ Не догоняю как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru