Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

массивы в делфи   Найти похожие ветки 

 
KaTH   (2005-10-27 23:12) [0]

понесли девушку на ВМС МИРЭА, теперь сидит мучается... подскажите пожалуйста идейку как решается следуйщее
Дан массив А из Н целых чисел переставить эллементы сассива так, чтобы вначале шла группа эллементов больших того элемента кот., в исходном массиве распологается на первом месте, затем сам этот элемент, потом группа элементов меньших или равных ему. Число сравнений и перемещений для каждого в отдельности не должно превышать Н-1


 
Германн ©   (2005-10-28 01:51) [1]

2 Девушка
Сначала научись меньше пить, потом научись излагать свои мысли. Не хило бы было и научиться "попадать на клавиши"!


 
skiph ©   (2005-10-28 04:23) [2]

С такой постановкой задача не решаема, поскольку на ряд элементов нужно будет 2 сравнения: скажем, больше ли он первого элемента и, если - нет, равен ли он этому элементу.
Могу предложить только такой вариант:

Var a,a_copy:array[1..H] of integer (byte, real,...)
i, b,e:integer;

begin
// получаем данные
b:=1; // будем заполнять одновременно с конца и с начала
e:=H;
for i:=2 to H do
if a[i]>a[1] then // элемент больше, значит в начало
 begin
   a_copy[b]:=a[i];
   inc(b);
 end
else
 if a[i]<a[1] then // сравнение нужно, поскольку в массиве могут быть элементы и равные а[1]
  begin
    a_copy[e]:=a[i];
    dec(e);
  end;
// Все! Осталось только заполнить серединку элементами, равными а[1]
for i:=b to e do
 a_copy[i]:=a[1];
 
В a_copy - результат


 
TUser ©   (2005-10-28 08:37) [3]

Это ж QuickSort недоделанный

var i, j: integer;
    a0: integer;
begin
i:=0; j:=H-1;
a0:=A[0];
repeat
while A[i] < a0 do inc (i);
while A[j] > a0 do dec (j);
if i <= j then begin
Swap (A[i],A[j]);
inc (i); dec (j);
end;
until i < j;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
9-1120306753
ProGamer
2005-07-02 16:19
2005.11.20
проблема с установкой гл сцены


4-1127292865
Denizzz
2005-09-21 12:54
2005.11.20
Окно приложения прижать к панели задач (справа/слева)


14-1130699106
Bogdan1024
2005-10-30 22:05
2005.11.20
Бомжи - чума 21 столетия


3-1129098845
tytus
2005-10-12 10:34
2005.11.20
Table is Full и как с этим бороться?


2-1130438398
Mr.jack
2005-10-27 22:39
2005.11.20
QReport албомный