私はデータ1,2,3,4,5,6を持っているとしましょう
このデータを並べ替えて、6 1 5 2 4 3 を出力するようにしたい
このように、数値が一致するため、低い数値と高い数値がペアになります
マージソートを使用して番号順にソートし、リストを分割してこの条件に従って一致させますか?
データ ファイルから読み取った文字列グリッドで実数データを並べ替えようとしています。これらのデータを数値順にソートする作業プログラムがありますが、高、低、高、低の順にソートするようにコーディングする方法がわかりません
これは私のグリッドソートのコードです
procedure TForm1.SortGrid(Grid: TStringGrid; const SortCol: Integer;
//sorting the string grid
const datatype: Integer; const ascending: boolean);
var
i: Integer;
tempgrid: TStringGrid;
list: array of Integer;
begin
tempgrid := TStringGrid.create(self);
with tempgrid do
begin
rowcount := Grid.rowcount;
ColCount := Grid.ColCount;
fixedrows := Grid.fixedrows;
end;
with Grid do
begin
setlength(list, rowcount - fixedrows);
for i := fixedrows to rowcount - 1 do
begin
list[i - fixedrows] := i;
tempgrid.rows[i].assign(Grid.rows[i]);
end;
Mergesort(Grid, list, SortCol + 1, datatype, ascending);
for i := 0 to rowcount - fixedrows - 1 do
begin
rows[i + fixedrows].assign(tempgrid.rows[list[i]])
end;
row := fixedrows;
end;
tempgrid.free;
setlength(list, 0);
end;