![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Помогите, пожалуйста, разобраться, сделал сортировку методом четных и нечетных транспозиций, всё хорошо сортируется, а первый элемент нет.
Помогите найти ошибку в коде? Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i,r,j,k:word;
flag:boolean;
begin
Form1.ListBox2.Clear;
SetLength(B,N);
repeat
for j:=1 to 2 do
begin
flag:=false;
i:=j;
while i<n do
begin
if B[i]>B[i+1] then
begin
r:=B[i+1];
B[i+1]:=B[i];
B[i]:=r;
flag:=true;
end;
i:=i+2
end;
end;
until flag=false;
for i:=0 to n-1 do
Form1.ListBox2.Items.Add(IntToStr(B[i]));Последний раз редактировалось boxep, 25.11.2009 в 19:16. |
|
#2
|
|||
|
|||
|
Никто не знает?
|
|
#3
|
||||
|
||||
|
Массив начинаеися с нулевого эл-та.
|
|
#4
|
|||
|
|||
|
Цитата:
Я исправил, там неверно написал вывод массива в стрингрид, в этом случае не сортируется первый элемент |
|
#5
|
||||
|
||||
|
Так попробуй
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i,r,j,k:word;
flag:boolean;
begin
Form1.ListBox2.Clear;
SetLength(B,N);
repeat
for j:=0 to 1 do
begin
flag:=false;
i:=j;
while i<n-1 do
begin
if B[i]>B[i+1] then
begin
r:=B[i+1];
B[i+1]:=B[i];
B[i]:=r;
flag:=true;
end;
i:=i+2
end;
end;
until flag=false;
for i:=0 to n-1 do
Form1.ListBox2.Items.Add(IntToStr(B[i]));
|
|
#6
|
|||
|
|||
|
Цитата:
|