Есть строковый массив массивов. Двумерный. Кол-во элементов 37.
Количество записей - любое. B_records_count = кол во записей.
Задача - отсортировать массив по возрастанию по 37 элементу.
Использую метод пузырька.
{
Комментарии
Массив и его данные - пример.
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;
Проблема - алгоритм работает с ошибкой. Сортировка не происходит и пропадает последний элемент.
Где ошибка?