- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
const int n=20;
int mass[20];
void massiv(int x[])
{
srand(time(NULL));
for(int i=0;i<20;i++) mass[i]=rand()%100;
return 0;
}
void vivod(int x[])
{
for(int i=0;i<20;i++) cout<<mas[i]<<"\n";
return 0;
}
void sort (int x[])
{
int i,j,b;
for(j=1;j<=n-1;j++)
for(i=0;i<=n-1-j;i++)
if (mass[i]>mass[i+1])
{
b=mass[i];
mass[i]=mass[i+1];
mass[i+1]=b;
}
}
return 0;
}
int main(int argc, char *argv[])
{
zapolneniemassiva(mass[20]);
pokaz(mass[20]);
sort(mass[20]);
variant3(mass[20]);
system("PAUSE");
return EXIT_SUCCESS;
}
Одногруппник сделал лабу на C++, программа сортирует массив по возрастанию и выводит, ну, по крайней мере, должна.
bormand 28.03.2013 13:38 # +1
P.S. Очень странно, но сама пузырьковая сортировка походу написана корректно.
LispGovno 28.03.2013 13:48 # −2
Плюс пузырьковой сортировки в том, что она сортирует быстро почти отсортированные коллекции.
Так что не хватает теста на отсортированность и выхода из очередной итерации, если это произошло.
Хотя конечно использовать её для почти отсортированных коллекций не имеет смысла, так как есть более хорошие алгоритмы
bormand 28.03.2013 13:58 # +3
Скажи спасибо, что автор "лабы" хотя бы с индексами не пролетел, и оно с горем-попалам, хоть и медленно, и совсем не тот массив, который ей передали в аргументе, но все-таки будет сортировать... Какая уж тут эффективность...
А вот остальной код - скучная, унылая, некомпилирующаяся хуита:
1) return 0 в void'ах
2) совершенно левые имена функций в main()
3) каст из инта в указатель в sort(mass[20])
4) mass и mas
defecate-plusplus 28.03.2013 14:20 # +9
докатились
DBdev 28.03.2013 20:19 # +3
bormand 28.03.2013 20:36 # +2
LispGovno 28.03.2013 21:37 # 0
bormand 28.03.2013 21:49 # +2
3.14159265 28.03.2013 21:50 # +1
bormand 28.03.2013 21:57 # 0
tirinox 28.03.2013 22:11 # +3
bormand 28.03.2013 22:14 # +1
Нижние 3 строки показывают требования к входным и выходным параметрам, а также запоротые во вставке регистры.
3.14159265 28.03.2013 22:16 # +2
bormand 28.03.2013 22:17 # +1
3.14159265 28.03.2013 22:23 # 0
Я тоже про макросы подумал.
>или "+ и -" же
Вот такие как ты и писали в жабе усреднение для binarySearch.
bormand 28.03.2013 22:24 # 0
3.14159265 28.03.2013 22:39 # 0
Выбиралось для сортировки (a+b)/2. В знаковой жабе.
bormand 28.03.2013 22:47 # +2
В тех же крестах последствия были бы куда веселее...
3.14159265 28.03.2013 22:52 # 0
LispGovno 29.03.2013 02:41 # 0
bormand 29.03.2013 05:30 # 0
Начала и конца исследуемого блока же. Вспоминай как работает двоичный поиск.
Вот если искомый элемент лежит практически в конце, а массив содержит чуть больше миллиарда элементов, то a+b переполнятся и их сумма станет отрицательной...
guest 30.03.2013 21:59 # 0
Блин, я бы пролетел... А как делать правильно?
ШиндовсХовно
TarasB 30.03.2013 22:34 # +1
guest 30.03.2013 22:50 # 0
LispGovno 30.03.2013 22:57 # −2
Конечно же
(a+b)>>1
Хотя думаю можно ещё улучшить ситуацию
LispGovno 30.03.2013 23:01 # −3
a+(abs(a-b)/2)
LispGovno 31.03.2013 01:29 # 0
bormand 31.03.2013 07:45 # +1
a + (b-a) / 2
Модуль здесь не нужен, т.к. при двоичном поиске всегда понятно, где верхняя граница, а где нижняя.
> (a+b)>>1
(a+b) >>> 1
LispGovno 31.03.2013 10:53 # 0
> (a+b) >>> 1
> >>>
Что это?
bormand 31.03.2013 11:01 # +2
>> это жабий sar
>>> это жабий shr
LispGovno 31.03.2013 11:23 # −2
bormand 31.03.2013 11:29 # +1
Это не роллы. Это шифты же.
Один растягивает знаковый бит, и юзается для знаковых чисел. Второй вдвигает нолики, поэтому эмулирует сдвиг на беззнаковых числах.
LispGovno 31.03.2013 11:54 # −5
bormand 31.03.2013 15:58 # +5
Ебанись. Арифметический (a) сдвиг (s) вправо (r) же.
LispGovno 31.03.2013 20:06 # −5
А это аргумент. Борми, помоему ты переугорел с поцанами с улицы.
TarasB 31.03.2013 18:39 # +2
твой вариант обломается, если a дохуя отрицательное, b дохуя положительное
bormand 31.03.2013 19:08 # −1
Это задача о двоичном поиске в массиве. Откуда там отрицательные числа?
TarasB 31.03.2013 20:16 # +6
bormand 01.04.2013 10:44 # +1
Пасцализм ;)
LispGovno 01.04.2013 10:49 # −1
bormand 01.04.2013 11:12 # 0
А не дядю Вирта случаем? ;) Паскаль программированием не особо увлекался.
LispGovno 01.04.2013 11:33 # −2
TarasB 01.04.2013 15:56 # 0
TarasB 31.03.2013 18:38 # 0
LispGovno 30.03.2013 22:55 # −4
Здрисни.
3.14159265 01.04.2013 15:49 # 0
Пиздец. Та грех такое минуснуть.
>Обмен посредством "xor" или "+ и -" же.
Что еще можно было ожидать от автора такого поста?
Кстати ни одного вменямого варианта по треду я не увидел.
bormand 01.04.2013 16:25 # +1
(a+b) >>> 1 чем не вменяем?
3.14159265 01.04.2013 16:39 # +3
За обилием absов не заметил лишнего ">".
Да и вообще я думал над "универсальным" вариантом.
Без жабизма головного мозга, чтоб уж везде.
(x & y) + ((x^y)>>1)
Должно по идее работать и на знаковых и на беззнаковых.
bormand 01.04.2013 17:09 # +1
Вот битоебство то... частичные суммы и переносы разделены на 2 слагаемых, и сдвинуты по-отдельности...
3.14159265 01.04.2013 17:20 # +4
Будь-то отрицательные, положительные, кресты, сишка, жаба, signed, unsigned.
Железно.
Не пойму другого - зачем вообще было тратить бисер и начинать что-то объяснять гумну?
Пусть бы дальше absы делал.
bormand 01.04.2013 17:26 # +4
Чтобы накалить обстановку и написать Ебанись. Арифметический (a) сдвиг (s) вправо (r) же.
LispGovno 01.04.2013 16:47 # −2
Ну и что тебе не понравилось? Абс спугался?
3.14159265 01.04.2013 16:54 # +1
a=6;
b=0;
6+(6/2)=9
Q.E.D
О чем можно спорить с человеком который не знает (не способен нагуглить) что означает какой сдвиг?
bormand 01.04.2013 17:03 # +1
> b=0;
Ну все-таки в рассматриваемой задаче предполагается, что a <= b. Но тогда и abs не нужен, достаточно тупо a+(b-a)/2.
3.14159265 01.04.2013 17:15 # 0
Но не хотелось пугать наших крестодрузей всякими >>>. Жабисты не поймут про unsigned.
(x+y)>>>1
x=-1;y=-1;
Тоже работать не будет. Ну по-крайней мере хорошо на положительных - не так как у гумна. Ну он вообще дятел - потратил 4 инструкции, а пользы - никакой.
Потому ни одного по-настоящему хорошего варианта усреднения джвух чисел в треде я не увидел.
bormand 01.04.2013 17:18 # 0
x/2 + y/2 + (x & y & 1)
Если не туплю - должно работать на всем диапазоне и в любом порядке.
bormand 01.04.2013 17:27 # 0
Ан нет. Багует на -5 и 5 например.
3.14159265 01.04.2013 17:29 # 0
(ну помимо полного абсурда: передавать туда разные типы unsigned и signed чтоб оно неправильно сдвинуло)
bormand 01.04.2013 17:39 # 0
Нет. Пока не находится.
3.14159265 01.04.2013 17:43 # 0
>int y = 251658240;
http://ideone.com/ovOHf3
Не ломается.
Ну кстати язык не только жаба.
eth0 01.04.2013 17:45 # +1
bormand 01.04.2013 17:46 # +1
Поделитесь секретом бессмертия?
P.S. На сишных int16_t потестил, все сочетания нормально проходят.
3.14159265 01.04.2013 17:46 # +1
Лол, а толку? Это ж логика.
Тут голова главное - найти крайний случай где не работает, а не беспощадный, бессмысленный и вечный брутфорс по диапазону 10^18.
eth0 01.04.2013 19:54 # +1
defecate-plusplus 28.03.2013 22:23 # +3
явка провалена
bormand 29.03.2013 05:31 # 0
Ассемблер выглядывает из этого кода ;)
LispGovno 28.03.2013 22:18 # −1
А ещё вместо переменных используй регистры.
bormand 29.03.2013 05:35 # +2
3.14159265 29.03.2013 14:54 # +1
Они пытаются писать "умный" код, а выходит говно.
orion 29.03.2013 13:39 # +1
bormand 29.03.2013 14:03 # 0
И?
bormand 30.03.2013 07:52 # +1
А для знаковых чисел на подавляющем большинстве платформ, где для представления отрицательных чисел используется дополнение до 2, сложение и вычитание отлично скомпенсируются т.к. на данных платформах для add и sub нет никаких различий между signed и unsigned.
P.S. Это, конечно, не отменяет того факта, что сам способ - говно. Хоть с ^ хоть c +/-.
miscff 29.03.2013 16:59 # 0
По-моему, если известно заранее, что код пишется для винды, не грех заюзать getch() из conio.h.
bormand 29.03.2013 17:09 # +1
Консольную прогу предполагается юзать из консоли, а консоль никуда не пропадает после выхода программы, поэтому задержка там нафиг не сдалась.
eth0 29.03.2013 20:49 # 0
bormand 30.03.2013 07:41 # 0
bormand 30.03.2013 07:53 # 0
guest 30.03.2013 13:04 # −4
ХХХГовно
bormand 30.03.2013 13:07 # +3
guest 30.03.2013 13:23 # −5
ШиндовсГовно
guest 30.03.2013 19:31 # −4
Знатный тролль
guest 30.03.2013 20:05 # −3
Пиздить изволите?
bormand 30.03.2013 20:29 # 0
guest 30.03.2013 20:52 # 0
bormand 30.03.2013 21:14 # 0
vistefan 01.04.2013 19:27 # 0