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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2016, 12:06   #1
ShuricFC
Пользователь
 
Регистрация: 17.09.2016
Сообщений: 25
По умолчанию Количество различных элементов массива

Как можно оптимизировать данный код, чтобы программа выполнялась быстрее?
Код:
#include <iostream>
#include "fstream"
using namespace std;
int different_numbers(int n, int *a) {
	ofstream f1("output.txt");
	int i, j, kol = 1;
	for (i = 0; i<n - 1; i++) {
		for (j = i + 1; j<n; j++) if (a[i] == a[j]) break;
		if (j == n) kol++;
	}
f1<< kol;
	return kol;
}
int main() {
	int n, i, j, numb;
	ifstream f("input.txt");
	ofstream f1("output.txt");
	f >> n;
	int* a;
	int p, kol = 1;
	a = new int[n];
	for (int i = 0; i < n; i++)
		f>> a[i];
	different_numbers(n, a);
 
	return 0;
}
ShuricFC вне форума Ответить с цитированием
Старый 22.09.2016, 13:33   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а что тут не так с быстродействием?
Если исходный массив данных не отсортирован изначально, то быстрее алгоритм и не придумаешь.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2016, 13:41   #3
ShuricFC
Пользователь
 
Регистрация: 17.09.2016
Сообщений: 25
По умолчанию

Не проходит по времени по всем тестам.
ShuricFC вне форума Ответить с цитированием
Старый 22.09.2016, 13:56   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Попробуй использовать эту технологию:

34.jpg

Если ты не понял как она работает - пиши здесь.
Кстате, а что за тесты работы программ?

Последний раз редактировалось ura_111; 22.09.2016 в 13:59.
ura_111 вне форума Ответить с цитированием
Старый 22.09.2016, 14:12   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ShuricFC Посмотреть сообщение
Не проходит по времени по всем тестам.
онлайн система тестирования?

дайте ссылочку на задачу или, если это невозможно,
тогда условие задачи приведите ПОЛНОСТЬЮ и ТОЧНО.

p.s. кстати, у Вас в коде много "огрехов", Вы про это знаете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2016, 14:17   #6
ShuricFC
Пользователь
 
Регистрация: 17.09.2016
Сообщений: 25
По умолчанию

Каких огрехов?
ЗАДАЧА:
Дан массив целых чисел. Найти количество различных элементов в нем. Предполагаю, что сначала нужно отсортировать массив, а затем искать количество, но так работает еще медленее.
ShuricFC вне форума Ответить с цитированием
Старый 22.09.2016, 14:27   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Каких огрехов?
Два раза открывается файл
Не чистится память
Есть неиспользуемые переменные
p51x на форуме Ответить с цитированием
Старый 22.09.2016, 14:27   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Каких огрехов?
дважды открываете выходной файл,
в главной программе описаны переменные, которые там не используются,
функция different_numbers описана, как возвращающая значение, но это значение нигде не используется.

Достаточно?

p51x опередил!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2016, 14:31   #9
ShuricFC
Пользователь
 
Регистрация: 17.09.2016
Сообщений: 25
По умолчанию

Спасибо, но проблема не в этих ошибках.
ShuricFC вне форума Ответить с цитированием
Старый 22.09.2016, 14:36   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

завести ОТСОРТИРОВАННЫЙ массив ИНДИКАТОР(счетчик) использования данного числа.

1. первый проход по циклу( одновременно со считыванием ВХОДНОГО файла)
--определяем границы "индикаторного" массива.
P.S. в условии наверняка есть ограничения на величины входных чисел и размер массива индикатора можно задать даже и без minmax.
Цитата:
дайте ссылочку на задачу или, если это невозможно,
тогда условие задачи приведите ПОЛНОСТЬЮ и ТОЧНО.
2. при чтении (или втором проходе) ОТМЕЧАЕМ(считаем) использованные.

3. по индикаторному массиву СЧИТАЕМ количество отмеченных.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод различных элементов массива. pirat2k Общие вопросы C/C++ 5 24.03.2016 17:10
подкорректировать: Дан массив, все элементы которого упорядочены. Найти количество различных элементов в данном массиве ( Delphi ) schibeki Помощь студентам 9 20.02.2014 09:39
Дан массив A[7,7]. Найти количество столбцов, составленных из попарно различных элементов (Pascal) yul111-95 Паскаль, Turbo Pascal, PascalABC.NET 0 02.02.2013 22:01
Сумма различных элементов массива bin11 Помощь студентам 0 21.05.2012 15:30
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13