Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2016, 12:46   #1
Saruman!
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 11
По умолчанию Оптимизация кода

Код:
#include <iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int A[n];
    for(int i=0;i<n;i++)
        cin >> A[i];
    int j=0,i=0;
    for(i;i<n;i++)
    {
        for(j=1;j<n;j++)
        {
            if(A[j]%2 == 0 && A[j-1]%2 != 0)
                swap(A[j-1],A[j]);
        }
    }
    for(int i=0;i<n;i++)
        cout << A[i] << " ";
}
Не использовать функции и методы. Упростить сложность программы.
Данный алгоритм имеет сложность n^2.
Прошу помочь пожалуйста.

Программа делит массив сохраняя порядок чисел на чётные и нечётные числа.
В левой стороне все чётные числа, а в правой все нечётные.

Пример : 5 3 2 4 7 8

Вывод : 2 4 8 5 3 7

Последний раз редактировалось Аватар; 26.11.2016 в 15:38.
Saruman! вне форума Ответить с цитированием
Старый 26.11.2016, 15:36   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде сложность: 3*n = n

0.jpg
ura_111 вне форума Ответить с цитированием
Старый 26.11.2016, 15:52   #3
Saruman!
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 11
По умолчанию

Извиняюсь, забыл дополнить условие. Создавать дополнительные массивы нельзя.
Saruman! вне форума Ответить с цитированием
Старый 26.11.2016, 18:04   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

https://ru.wikipedia.org/wiki/Устойчивая_сортировка
раздел: Алгоритмы сортировки слиянием без дополнительной памяти
Sibedir вне форума Ответить с цитированием
Старый 26.11.2016, 18:20   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Попробуй так:

0.jpg

0_0.jpg

0_1.jpg
ura_111 вне форума Ответить с цитированием
Старый 26.11.2016, 19:20   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Кстати, Saruman!, там вроде ошибка. У тебя, как-бы пузырьковая сортировка. Обрати внимание на диапазоны циклов
Цитата:
Код:
...
    int j=0,i=0;
    for(i;i<n;i++)
    {
        for(j=1;j<n;j++)
...
https://ru.wikipedia.org/wiki/%D0%A1...86.D0.B8.D1.8F

Я делаю i от 1 до N-1, а j от 0 до N-i-1. И сравниваю A[j] и A[j+1].
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимизация кода Programmer121 Общие вопросы C/C++ 7 12.01.2016 17:37
Оптимизация кода HDMI PHP 16 22.10.2012 13:06
оптимизация кода GerNick Общие вопросы C/C++ 3 24.12.2010 16:40
Оптимизация кода. Alex Cones Общие вопросы Delphi 19 12.10.2009 20:51
Оптимизация кода Terran Общие вопросы Delphi 6 01.11.2008 16:57