С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
1

Оптимизация алгоритма нахождения максимального элемента

03.05.2020, 18:45. Показов 870. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дорогие форумчане, второй день ломаю голову над лабораторной, если у кого есть готовые варианты или хотя бы предполагает в какую сторону двигаться, подскажите. Буду при много благодарен.
Задание:
В соответствии с вариантом задания, реализовать алгоритмы так, чтобы их временная сложность соответствовала требуемой в постановке задачи или были проведены иные оптимизации (см. табл. 2). Решения представить в виде работающих программ на C++

1. Поиск номера максимального элемента в массиве a[n]

C++
1
2
3
4
5
int max=a[0], imax=0;
for (int i=1; i<n; i++) 
   if (a[i]>max) {
      max = a[i]; imax=i; 
 }
реализовать алгоритм без применения 2 дополнит. переменных)

2. Получение четырёхзначного натурального числа из пары двузначных
C++
1
2
3
4
5
int a=12,b=34;
char buf[4];
itoa(a,buf,10);
itoa(b, &buf[2], 10);
cout << buf;
устранить использование дополнительного строкового буфера
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2020, 18:45
Ответы с готовыми решениями:

Составить функцию нахождения максимального элемента
Составить функцию нахождения максимального элемента в диагонали матрицы, параллельной главной...

Шаблон нахождения максимального элемента в массиве
Доброго всем дня.. В общем проблема. Ничерта не могу понять в шаблонах (С++). Суть задания -...

Функция нахождения максимального элемента массива
Разработать функцию нахождения максимального элемента массива и применить ее для двух массивов ...

Функция нахождения максимального элемента массива
#include &lt;iostream.h&gt; main() {int i, max, A; for(i=1;i&lt;=5;i++) {cout&lt;&lt;&quot;vvedite element massiva:...

17
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
03.05.2020, 18:59 2
2
C++
1
2
3
int a=12, b=34, buf;
buf = 12*100 + b;
cout << buf;
1
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
03.05.2020, 19:00  [ТС] 3
Тоже приходил к этому решению, наверное на нём и остановлюсь. Спасибо
0
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
03.05.2020, 19:02 4
Цитата Сообщение от vterkin Посмотреть сообщение
реализовать алгоритм без применения 2 дополнит. переменных)
- это значит...
без применения двух дополнительных переменных?
без применения второй дополнительной переменной?
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
03.05.2020, 19:04  [ТС] 5
без применения двух дополнительных переменных
0
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
03.05.2020, 19:09 6
1 оставить можно?

Добавлено через 32 секунды
Цитата Сообщение от vterkin Посмотреть сообщение
C++
1
int max=a[0], imax=0;
- т.е. из вот этих двух, одну убрать, а одну оставить?
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
03.05.2020, 19:11  [ТС] 7
Цитата Сообщение от FFPowerMan Посмотреть сообщение
1 оставить можно?

Добавлено через 32 секунды
- т.е. из вот этих двух, одну убрать, а одну оставить?
Нет, нужно обе убрать
0
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
03.05.2020, 19:13 8
1) просто sort применить и взять последний элемент.

Добавлено через 1 минуту
Какие Ваши варианты?
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
03.05.2020, 19:13  [ТС] 9
Цитата Сообщение от FFPowerMan Посмотреть сообщение
1) просто sort применить и взять последний элемент.

Добавлено через 1 минуту
Какие Ваши варианты?
Это увеличит время работы алгоритма, соответственно возрастёт трудоемкость. А здесь задача оптимизировать данный алгоритм.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.05.2020, 19:14 10
Цитата Сообщение от vterkin Посмотреть сообщение
1. Поиск номера максимального элемента в массиве a[n]
C++
1
2
3
4
5
imax=0;
for (int i=1; i<n; i++)
if (a[i]>a[imax]) imax=i;
 
cout << "number=" << imax+1 << "\n";
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
03.05.2020, 19:16  [ТС] 11
Цитата Сообщение от FFPowerMan Посмотреть сообщение
1) просто sort применить и взять последний элемент.

Добавлено через 1 минуту
Какие Ваши варианты?
На данный момент вариантов пока не имею(

Таких задач 10, если интересно про них тут написано http://blog.kislenko.net/show.php?id=2000

Добавлено через 1 минуту
Цитата Сообщение от Yetty Посмотреть сообщение
C++
1
2
3
4
5
imax=0;
for (int i=1; i<n; i++)
if (a[i]>a[imax]) imax=i;
 
cout << "number=" << imax+1 << "\n";
реализовать алгоритм без применения 2-х дополнительных переменных
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.05.2020, 19:28 12
vterkin, в варианте который сбросил нет
Цитата Сообщение от vterkin Посмотреть сообщение
2-х дополнительных переменных
при желании можно и imax убрать учитывая что number_max=imax+1
C++
1
2
3
    number_max=1;
    for (int i=1; i<n; i++)
    if (a[i]>a[number_max-1]) number_max=i+1;
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
03.05.2020, 19:40  [ТС] 13
Цитата Сообщение от Yetty Посмотреть сообщение
vterkin, в варианте который сбросил нет

при желании можно и imax убрать учитывая что number_max=imax+1
C++
1
2
3
    number_max=1;
    for (int i=1; i<n; i++)
    if (a[i]>a[number_max-1]) number_max=i+1;
Благодарю за ответ, но суть немного другая, вообще не использую дополнительных переменных (вообще никаких, number_max и imax тоже) найти номер максимального элемента массива.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.05.2020, 19:53 14
Цитата Сообщение от vterkin Посмотреть сообщение
но суть немного другая
неправильно понимаете. в Вашем первоначальном коде: max и imax это две дополнительные переменные. в ответ выводится номер: объявляется переменная number_max и ей присваивается значение второй дополнительной переменной +1:
C++
1
2
3
int number_max;
number_max=imax+1; 
cout << number_max << "\n"; // это и будет ответ
в том варианте что я Вам сбросил в сообщении №12 вообще нет дополнительных переменных (только одна основная)
0
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
03.05.2020, 20:36 15
1
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>
using namespace std;
#define n 5
 
int main()
{
    int i, a[n];
    
    a[0] = 0; //Debug
    a[1] = 5;
    a[2] = 1;
    a[3] = 2;
    a[4] = 0;
        
    for(i = 1; i < n; i++)
    {
        if(a[i] > a[i >> 16])
        {
            i &= 0xFFFF;
            i |= (i&0xFFFF) << 16;
        }
            
    } 
    cout << "number = " << (i >> 16) << "\n";
    
    return 0;
}
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
04.05.2020, 00:05 16
по-моему, на своих оптимизациях автор совсем повернулся - оптимизирует даже количество строчек, похоже на то
C++
1
 for (int i = 0; i < n; i++) if (a[i] > a[imax]) imax = i;
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 8
04.05.2020, 10:47  [ТС] 17
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
по-моему, на своих оптимизациях автор совсем повернулся - оптимизирует даже количество строчек, похоже на то
C++
1
 for (int i = 0; i < n; i++) if (a[i] > a[imax]) imax = i;
Это не в авторе дело, это задание лабораторной работы по теме Оптимизация временной сложности алгоритма. А мне её нужно решить, вот и спросил совет.
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
04.05.2020, 11:17 18
vterkin, я и имел в виду автора задания
0
04.05.2020, 11:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2020, 11:17
Помогаю со студенческими работами здесь

Подпрограмма для нахождения максимального элемента массива
пишу простую подпрограмку по нахождению максимального элемента а она почему то не работает(( ...

Функция сортировки и нахождения максимального элемента массива
Написать функцию, которая принимает у пользователя массив, сортирует его и находит максимальный...

Рекурсифная функция нахождения максимального элемента массива
Нужно найти максимальный элемент в массиве, в принципе все просто, только как написать тоже самое...

Рекурсивная функция нахождения максимального элемента в списке
Саму функцию нахождения максимального элемента написал. Мне только нужно рекурсию сделать. Заранее...

Найти два элемента в массиве, разница между которыми максимальна (оптимизация алгоритма)
Есть правильное решение задачи. Не проходит последние тесты по времени. Задачу я уже сдал, но...

Составить рекурсивную процедуру нахождения максимального элемента в массиве
3. Составить рекурсивную процедуру нахождения максимального элемента в массиве.


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru