powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проверка неравенства элементов массива
18 сообщений из 18, страница 1 из 1
Проверка неравенства элементов массива
    #33902365
Андрей Il
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть массив: int i[9].
Как наиболее быстро определить неравенство всех элементов относительно друг друга?
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902415
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отсортировать и проверить стоящие рядом элементы на несовпадение.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902438
Андрей Il
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все элементы должны быть различны.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902464
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
берешь i-й элемент и в цикле сравниваешь с i+k-ым элементом, где i меняется от 0 до колва элементов, а k от i+1 до колва элементов
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902488
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей IlВсе элементы должны быть различны.
Я ж и говорю, отсортировать в любом порядке и проверить, что любые два элемента, стоящие рядом различны. Если есть совпадение - выход с сообщением о наличии как минимум двух совпадающих элементов.

to
дед Макарберешь i-й элемент и в цикле сравниваешь с i+k-ым элементом, где i меняется от 0 до колва элементов, а k от i+1 до колва элементов

Как я понял ключевое требование - быстро. Ваш алгоритм имеет квадратичную сложность. Если не ошибаюсь записывается так O(n^2). А предложенный мной - O(n*log2(n)).
На 9 элементах как в примере, Ваш будет безусловно быстрее, а на миллионе записей быстрая сортировака с последовательным перебором выиграет по скорости.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902497
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку, если использовать STL, в частности vector и sort, то даже писать ничего не приедтся.
весь алгоритм - 5-6 пользовательских строк.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902506
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и для обычных массивов поможет stl - алгоритм unique
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902516
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#include<iostream>
#include<algorithm>

using namespace std;

main()
{
	int arr[]={ 1 , 2 , 3 , 2 , 5333 , 6 , 7 };
	sort(arr,arr+sizeof(arr)/sizeof(arr[ 0 ]));
	if(unique(arr,arr+sizeof(arr)/sizeof(arr[ 0 ]))==arr+sizeof(arr)/sizeof(arr[ 0 ]))
		cout<<"уникальны"<<endl;
}
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902529
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to --null--, красиво, я про unique не вспомнил.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902540
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel Kilevatyh А предложенный мной - O(n*log2(n)).

Что-то я не заметил, чтобы предложения поступало.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902543
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel Kilevatyh
Я ж и говорю, отсортировать в любом порядке и проверить, что любые два элемента, стоящие рядом различны. Если есть совпадение - выход с сообщением о наличии как минимум двух совпадающих элементов.


Так ему не соседних проверять, а все элементы, как я понял
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902544
Андрей Il
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, проверю.
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902553
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Pavel Kilevatyh А предложенный мной - O(n*log2(n)).

Что-то я не заметил, чтобы предложения поступало.
дык не обязательно ж код писать. По моему первому посту написать не проблема.
Или ошибаюсь ?
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902557
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дед Макар
Так ему не соседних проверять, а все элементы, как я понял
сначала отсортировать )))
тогда одинаковые элементы станут рядом.

Все пойду трудиццо)))
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902561
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дед Макар Pavel Kilevatyh
Я ж и говорю, отсортировать в любом порядке и проверить, что любые два элемента, стоящие рядом различны. Если есть совпадение - выход с сообщением о наличии как минимум двух совпадающих элементов.


Так ему не соседних проверять, а все элементы, как я понял

Здесть, ключевое слово - сортировать
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902568
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дед Макар Pavel Kilevatyh
Я ж и говорю, отсортировать в любом порядке и проверить, что любые два элемента, стоящие рядом различны. Если есть совпадение - выход с сообщением о наличии как минимум двух совпадающих элементов.


Так ему не соседних проверять, а все элементы, как я понял

Че-то я протупил.... :) пропустил момент с сортировкой. Жара наверное дает о себе знать
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902580
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть самое ленивое - это слепо доверить всю работу
контейнерам. Во всяком случае в perl я бы именно так и сделал
(хотя по памяти это неэффективно)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include<iostream>
#include<set>

using namespace std;

main()
{
	int arr[]={ 1 , 2 , 3 , 2 , 5 };
	set<int> s1(arr,arr+sizeof(arr)/sizeof(arr[ 0 ]));
	if(sizeof(arr)/sizeof(arr[ 0 ])==s1.size())
		cout<<"уникальны"<<endl;
}
...
Рейтинг: 0 / 0
Проверка неравенства элементов массива
    #33902641
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel Kilevatyhдык не обязательно ж код писать. По моему первому посту написать не проблема.
Или ошибаюсь ?

Не обязательно. Но надо будет искать примеры.

По поводу моей фразы - вами не был предложен алгоритм сортировки, хотя, вы указали его сложность.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проверка неравенства элементов массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]