Turbo Pascal

dreamer

Member
Ответ: Turbo Pascal

Кстати об олимпиадах ;)
Часто эффективностью стоит пожертвовать в угоду простоте и читабельности.
Тем более это похоже учебная программка, толку програмить быструю если пузырек не каждый без ошибок напишет ;)
 

Пух

كنت بلهاء
Модератор
Ответ: Turbo Pascal

мне нужно именно этот алгоритм! Если б можна было любой, я б не написал бы сюда. В условии задачи указано, что нужно использовать "эфеективный метод пузырька". На С++ написал потому,что в инете только для него нашол реализацию этого алгоритма.
з.ы. тут не идется про эффективность данного метода. Просто есть 2 разновидности метода "пузырька" и мне нужно тот, который более эффективный (см код на С++ выше).
 

quant

yeah
Відповідь: Turbo Pascal

На С++ написал потому,что в инете только для него нашол реализацию этого алгоритма.
плохо искал
Код:
Procedure Shakesort;

var

J,K,L,R : Index;

X : Item;

begin

L :=2;

R :=N;

K :=N;

repeat

for J :=R downto L do

if A[J - 1].Key > A[J].Key then

begin

X :=A[J - 1];

A[J - 1] :=A[J];

A[J] :=X;

K :=J;

end;

L :=K+1;

for J :=L to R do

if A[J - 1].Key > A[J].Key then

begin

X :=A[J - 1];

A[J - 1] :=A[J];

A[J] :=X;

K :=J;

end;

R :=K - 1;

until L > R;

end;
я туго разбираюсь в паскале, но если ты сортируешь массив чисел, то тебе следует убрать .Key и алгоритм реди ту юз
 

Vano

New Member
Ответ: Turbo Pascal

мне нужно именно этот алгоритм! Если б можна было любой, я б не написал бы сюда. В условии задачи указано, что нужно использовать "эфеективный метод пузырька". На С++ написал потому,что в инете только для него нашол реализацию этого алгоритма.
з.ы. тут не идется про эффективность данного метода. Просто есть 2 разновидности метода "пузырька" и мне нужно тот, который более эффективный (см код на С++ выше).
Читал только про один метод сортировки пузырьком, суть которого была в том что сравниваются два соседних елемента, и если их розмещение не отвечает критериям сортировки то они переставляются. Смотри пример:
Код:
...
for i:=0 to 5 do
if (mas[i]>mas[i+1])
begin
mas[i]:=j;
mas[i]:=mas[i+1];
mas[i+1]:=j;
end;
...
 

Пух

كنت بلهاء
Модератор
Ответ: Turbo Pascal

2 quant спасибо! Это именно то, что нужно.
2 Vano этот метод уже давно знаю, он не подходит т.к. "неефективный". Комп будет много лишних раз проходить массив.
 

Vladimir B.

милый добрый кот
Модератор
Ответ: Відповідь: Turbo Pascal

А время уходящее на вызовы функции, если говорить о классических компилируемых языках программирования? Все же процессорное время уходящее на вызов функции как-никак гораздо больше чем даже традиционнно считающаяся ресурсоемкой операция деления.
В тему, хоть и не паскаль. Наталкивался на ассемблерный код quicksorta. Почти любой рекурсивный алгоритм может быть реализован циклами. Что и было сделано, вдобавок были использованы метки и джампы (куда без них в нем?). "И никакого кипячения". Почему бы не реализовать циклами quicksort и тут?

P.S. Источник кода давным-давно утерян, находил еще в 10 классе, когда к олимпиадам готовился. Сам же повторить пока не готов.
 

quant

yeah
Відповідь: Turbo Pascal

Почему бы не реализовать циклами quicksort и тут?
я предложил рекурсивную версию в качестве сортировки на олимпиадах (ну или стыдно писать пузырёк)
в моём понимании на олимпиаде нужно писать быстро и как можно просто, полностью согласен с
Кстати об олимпиадах ;)
Часто эффективностью стоит пожертвовать в угоду простоте и читабельности.
 

dreamer

Member
Ответ: Відповідь: Turbo Pascal

я предложил рекурсивную версию в качестве сортировки на олимпиадах (ну или стыдно писать пузырёк)
в моём понимании на олимпиаде нужно писать быстро и как можно просто
Именно поэтому если на олимпиаде нужна была сортировка я писал сортировку вставками ;)
Хотя если задача была именно на скорость сортировки (иногда бывают и такие) то писал быструю :)

ЗЫ: написать нерекурсивный алгоритм быстрой и сравнить с рекурсивным... интересная мысль, понимаю что велосипед, но я спец по велосипедам :)
 

api4

Member
Ответ: Turbo Pascal

люди, помогите вот с таким зданием: надо считать с текстового файла целые числа в список, найти среднее арифметическое,
потом найти первый елемент который меньше сред.арифметического и вставить 10.
 

quant

yeah
Відповідь: Turbo Pascal

вообще учитывая STL C++ писать на паскале на олимпиадах оч жёстко
хотя вот чего мне не хватает в STL на олипиаде так это BigInteger - в JSTL ведь есть
люди, помогите вот с таким зданием: надо считать с текстового файла целые числа в список, найти среднее арифметическое,
потом найти первый елемент который меньше сред.арифметического и вставить 10.
и на каком этапе проблема ?
 
Зверху