Языки программирования C, C++, C# | SEclub.org
Языки программирования C, C++, C#
Все новые
«Когда писал лабку, появилась идея, увы это не мой уровень чтобы реализовать на практике. Суть в чем, все хорошо знают как работает сорт. пузырем ... но! пузырь идет последовательно, если предположим у нас массив 1000 на 1000 а то и больше ... я же предлагаю идти не по порядку а использовать рандум (генератор случайных чисел). Подробнее: Вот смотрите, берем точку 0 на 0 как в пузырьке, с этим числом которое там "зарыто" будем сравнивать следующее, которое выдаст ранд, допустим у нас массив 99 на 99 (так как нумерация идет с 0 то по сути 100 на 100), запускаем рандум который должен выдавать два числа, каждое должно быть уникальное иначе будут нужны расчеты, а это время и ресурсы, а он должен выдавать нам значения от 0 до 999, чем до 999 а не до 99 ажде массив имеет же размерность 99 на 99? Дело в том если ранд выдаст допустим 66 (а это должен быть номер строки из которого и возьмем наше число) и 25 (номер нашего колонки) откуда мы возьмем число чтобы сравнить с первым, мы же больше не получим доступ ко всему строки 66 и всего колонки 25, вот именно для этого я и беру диапазон * 10, а последнее число, если ранд выдаст скажем 498 и 256 то последний 8-ка и 6-ка игнорируется, последнее число нам нужно для того чтобы нам 10 раз получить число 49 ( чтобы перебрать все числа из строки 49) и 25 (чтобы перебрать все элементы столбца 25) Далее как в пузырьке, сравниваем и меньше ставим назад ... Если задуматься, существует вероятность того что рандум будет достаточно часто угадывать нужные координаты есть сравнит числа меньшее количество раз чем пузырь ... Я эту идею говорил уже трем мужчинам в т.ч. и преподавателю по соответствующему предмету, меня никто не хочет понимать ... Возможно секлубовские программисты, а среди них должны быть действительно хорошие специалисты, попытаются уловить.
ЗЫ Чуть что извините не не силен в программировании, как говорится - я не волшебник, я только учусь.Запряжем генератор случайных чисел, чтобы работал на пользу общества»
Я не очень понял, как ты собираешься сортировать двумерный массив пузырьком. Но даже в случае одномерного массива, не понятно, когда он будет отсортирован. (я так понял, что в сортировке пузырьком ты собираешься сравнивать элемент не с непосредственно следующим, а со случайно выбранным из следующих.) Возьмем, скажем, массив [2,1,3] - может получиться, что 2 будет сравниваться с 3, 1 - с 3 и никаких обменов не произойдет.

Ссылка на пост
Всего сообщений: 1664
*
FisHlaBsoMAN
3 дек 2012 в 02:06
SED, посидел подумал. всю ночь пытался понять как оно должно работать... ложусь спать.

зы - делать было нечего, решил написать алгоритм сортировки пузырьком и посчитать за сколько итераций он посчитает то или иное.
массив чисел с 459 до 0 отсортировал за 210222 проходов :D - экономная сортировка
3 дек 2012 в 02:09 / FisHlaBsoMAN (1)
*
ImIeee
3 дек 2012 в 09:34
Я не очень понял, как ты собираешься сортировать двумерный массив пузырьком. Но даже в случае одномерного массива, не понятно, когда он будет отсортирован. (я так понял, что в сортировке пузырьком ты собираешься сравнивать элемент не с непосредственно следующим, а со случайно выбранным из следующих.) Возьмем, скажем, массив [2,1,3] - может получиться, что 2 будет сравниваться с 3, 1 - с 3 и никаких обменов не произойдет.
3 дек 2012 в 09:35 / ImIeee (1)
*
SED
3 дек 2012 в 12:23
случайно, но чтобы без повторов, по моему на С++ там можно, но могу ошибаться.
*
ImIeee
3 дек 2012 в 12:48
SED: случайно, но чтобы без повторов, по моему на С++ там можно, но могу ошибаться.… Подробнее
Случайно, но без повторов, не получится, даже если опустить детали реализации, поскольку предпоследний элемент можно, очевидно, сравнивать только с последним, предпредпоследний - только с предпоследним (последний уже "занят") и так далее - в итоге получается обычный пузырек :-)
*
Miha
3 дек 2012 в 15:37
SED, у меня как раз текущая лабораторная (и единственная) связана со сравнением производительности несколких алгоритмов сортировки. Там и время сортировки измеряется, и всё разбито на функции так, что можно проверять скорость работы любого алгоритма. Про сортировку рандомных элементов мне давно говорили, но я считаю, что тогда генератор должен очень быстро работать. Правда, это будет работать всё равно медленнее, чем обычный алгоритм. Иначе - жертвовать точностью сортировки. Вообще, есть области применения, когда точность не особо важна. Обычно это мультимедия. Ну, подумаешь, пару пикселей будут не на своих местах :)
*
Miha
3 дек 2012 в 15:38
Если есть готовы алгоритм на Си, то я могу спокойно провести бенчмарк и сравнить с ещё пятью алгоритмами. Самым быстрым показал себя qsort.
*
SED
3 дек 2012 в 16:17
как сделаю так и отправлю, пока только гадаю.
*
DDDENISSS
6 дек 2012 в 18:32
в с++ возможно написать функцию, которая будет принимать любое кол-во переменных любого типа и выводить их в консоль? Хотел написать что-то типа printLine, но проблема в основном вышла из-за того, что одни параметры по ссылке передаются, а другие нет.
Такую функцию писал
void printLine(const void* first, ...){
va_list ap;
va_start(ap, first);

cout << first << endl;
while(true) {
int arg = va_arg(ap, int);
if(arg == 0) break;
cout << arg << endl;
}
va_end(ap);
}
*
DDDENISSS
6 дек 2012 в 18:47
И в макросах кто-нибудь разбирается? Можно сделать макрос для удобного измерения время выполнения метода?
Чтобы было типа long time = measure( f(...) );
Или так невозможно?
*
FisHlaBsoMAN
6 дек 2012 в 19:43
может передавать массив?
*
DDDENISSS
6 дек 2012 в 20:36
FisHlaBsoMAN, Вот я хочу простую функцию printLine("Time = ", time, ...); Как ты себе представляешь это с созданием массива?
Мне с cout возится уже надоело, с ним код такой грязный. А писать форматирование для printf не лучше вариант.
*
FisHlaBsoMAN
6 дек 2012 в 21:33
DDDENISSS, я не очень понимаю что ты хочешь
Для полноценного использования разделов сайта войдите или зарегистрируйтесь.
Создание сайтов и программирование | Компьютеры | Форум | Главная
18+ © Seclub.org 2003-2025