E
E
Evgeny Ivanov2017-01-13 09:08:48
Delphi
Evgeny Ivanov, 2017-01-13 09:08:48

Sorting an array - where is the mistake?

There is a string array of arrays. 2D. Number of elements 37.
Number of entries - any. B_records_count = number of records.
The task is to sort the array in ascending order by the 37th element.
I use the bubble method.

{
Комментарии
Массив и его данные - пример.
B_TABLE:array of array [1..37] of string;
Массив начинается с первой строки и первого элемента. 
Нулевых нет - там пусто и мы не работаем с ними.
B_TABLE[1,1]:='текст';
B_TABLE[1,2]:='текст2';
...
B_TABLE[1,36]:='текст36';
B_TABLE[1,37]:='2'; //Это число в виде текста по которому сортируем

B_TABLE[2,1]:='текст';
B_TABLE[2,1]:='текст2';
...
B_TABLE[2,36]:='текст36';
B_TABLE[2,37]:='1'; //Это число в виде текста по которому сортируем
и так далее
При сортировке запись 2 и все её элементы должны стать записью 1.
А запись 1 - записью 2. Проще говоря поменяться местами.
}

//Сортировка
//Начиная с первой "строки" массива (нулевой у нас нет - пустой, данные идут с 1 строки)
for i:=1 to B_records_count do
begin
for j:=1 to B_records_count-1 do
begin
//Меняем представление данных из строки в число
if strtoint(B_TABLE[j,37])>strtoint(B_TABLE[j+1,37]) then
begin
//Для всех элементов производим замену. Их у нас 37. С первого по 37 т.к. нулевого нет - пустой.
for k:=1 to 37 do
begin
sort_string:=B_TABLE[j,k]; //Поместили значение элемента в переменную для сортировки
B_TABLE[j,k]:=B_TABLE[j+1,k]; //Поменяли значения элементов
B_TABLE[j+1,k]:=sort_string;
end;
end;
end;
end;

Problem - the algorithm works with an error. Sorting does not occur and the last element disappears.
Where is the mistake?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
K
kalapanga, 2017-01-13
@kalapanga

There is nothing to check now, but try to write cycles like this:
for i:=1 to B_records_count - 1 do
for j:=1 to B_records_count - i do

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question