【发布时间】:2013-05-12 13:53:49
【问题描述】:
假设我有数据 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;
【问题讨论】:
-
如果你想按高-低-高-低的顺序对数字进行排序,你不应该从初始数据中得到 6 1 5 2 4 3 吗?
-
我只是写得很快,没有任何想法,但是是按这个顺序写的
-
我回滚了你的问题。原来的问题很好,已经回答了。
-
如何处理重复的数字?