Форум: "Прочее";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
ВнизАлгоритм сортировки 3 чисел... Найти похожие ветки
← →
ArtemESC © (2006-05-16 12:30) [0]Помогите найти самый простейший сабж...
← →
Megabyte © (2006-05-16 12:41) [1]Ну ппц. Если эта задача представляет для вас сложность, то лучше не идти в программисты.
Никаких супер современных технологий знать не надо, элементарная логика.
← →
Jeer © (2006-05-16 12:42) [2]ArtemESC © (16.05.06 12:30)
каких чисел (тип)
← →
Игорь Шевченко © (2006-05-16 12:42) [3]
> Помогите найти самый простейший сабж...
Сравнением ?
← →
TUser © (2006-05-16 12:49) [4]Что значит простейший? Поменьше текста, побыстрее, in place, поменьше сравнений, поменьше перестановок, - какой конкретно праметр должен быть оптимизирован?
← →
ArtemESC © (2006-05-16 15:06) [5]TUser © (16.05.06 12:49) [4]
поменьше сравнений
← →
MBo © (2006-05-16 15:11) [6]Для сортировки трех чисел нужно 258 сантибит информации, так что нужно придумать метод, использующий в худшем случае три, в лучшем - два сравнения.
Для тренировки попробуй начать с сортировки двух чисел.
← →
Чапаев © (2006-05-16 16:10) [7]
> Для тренировки попробуй начать с сортировки двух чисел.
А дальше рекурсией? ;-)
← →
Marser © (2006-05-16 16:27) [8]Необходимо минимум два сравнения, достаточно трёх.
← →
Slym © (2006-05-16 16:43) [9]следующий вопрос: как сравнить 2 числа :)
← →
Сергей М. © (2006-05-16 16:48) [10]
> ArtemESC © (16.05.06 12:30)
Мешочек с бочонками а-ля "Русское лото" - лучший друг и помошник тех кто не желает изучать теорию.
← →
oldman © (2006-05-16 18:38) [11]пишешь их в базу dbf
потом досовской СУБД пишешь "sort on"
потом... идешь грузить дрова... поскольку вопросики у тебя...
← →
icWasya © (2006-05-17 12:32) [12]>Slym © (16.05.06 16:43) [9]
>следующий вопрос: как сравнить 2 числа :)
procedure Sort_2(const A,B:Double;Var Max,Min:Double);
var
AB:Double;
begin
AB:=A+B;
Max:=(AB+Abs(A-B))/2;
Min:=AB-Max;
end;
и ни одного сравнения!
← →
Gero © (2006-05-17 12:50) [13]Не пойму: ты под пазитрона косишь?
← →
icWasya © (2006-05-17 13:37) [14]Извиняюсь
procedure Sort_2(const A,B:Double;Var Max,Min:Double);
var
AB:Double;
begin
AB:=A+B;
Max:=(AB - Abs(A-B))/2;
Min:=AB-Max;
end;
← →
KSergey © (2006-05-17 18:01) [15]> Abs(A-B)
Вот оно - скрытое сравнение. Или можно без сравнения реализовать Abs()?
← →
MBo © (2006-05-17 18:07) [16]>KSergey © (17.05.06 18:01) [15]
Для вещественных - можно, старший бит обнулить.
← →
Gero © (2006-05-17 18:07) [17]Sqrt(Sqr(X));
← →
MBo © (2006-05-17 18:16) [18]а для целых, если не ошибся - ((I sar 31) xor a) + I shr 31
sar - сдвиг с распространением знака
← →
MBo © (2006-05-17 18:24) [19]пардон, xor I в скобке
← →
ArtemESC © (2006-05-17 21:58) [20]MBo © (17.05.06 18:24) [19]
Да я вообщем разобрался -
сам нашел самый эффективный алгоритм (если кому надо):
1) Сортируем второе и первое...
2) Сортируем второе и третье ...
3) Опять сортируем второе и первое...
Проще не найдете!!!
Вопрос вообще для ленивых, а я стал настолько ленивым, что
чуть что, так сразу к знатокам, а мастера правильно делают, что
сразу не делятся - убиваете в людях лень...АХ... Чтобы все люди стали
трудягами - и работали как кони...
← →
Marser © (2006-05-17 23:37) [21]Странный ты... Разве ж это тема для обсуждения?
← →
Kolan © (2006-05-17 23:53) [22]Двух дней работы эта задача не стоила, потерял ты больше чем выиграл ИМХО.
← →
Сумчатое (2006-05-18 01:39) [23]
> icWasya © (17.05.06 12:32) [12]
>
> >Slym © (16.05.06 16:43) [9]
> >следующий вопрос: как сравнить 2 числа :)
>
> procedure Sort_2(const A,B:Double;Var Max,Min:Double);
> var
> AB:Double;
> begin
> AB:=A+B;
> Max:=(AB+Abs(A-B))/2;
> Min:=AB-Max;
> end;
>
> и ни одного сравнения!
>
Если A и B равны MaxDouble, то получишь ошибку.
← →
MBo © (2006-05-18 06:33) [24]>ArtemESC © (17.05.06 21:58) [20]
третье сравнение не всегда нужно.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.021 c