急,数组1排序后->数组2,求算法!3Q

jaspcloud 2006-12-15 08:55:31
数组1排序,同时将数组1排序前的序号值按排序后的顺序存入数组2,求一简单算法(代码少优先,速度其次)
例:

A[0]=4
A[1]=5
A[2]=3 ...

A[1]最大,A[0]第二,A[2]第三
则取A的原序号->B

B[0]=1
B[1]=0
B[2]=2...

3q~
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaspcloud 2006-12-15
  • 打赏
  • 举报
回复
就是要这个效果!!我郁闷了1天啊!!!!万万分感谢!!!!!!!;
3Q3Q3Q3Q;
wudi_1982 2006-12-15
  • 打赏
  • 举报
回复
靠,反了,我是按照从小到大排序的,你调整一下就可以了。
wudi_1982 2006-12-15
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
Ttest=record
data : Integer;
index : Integer;
end;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
fArray : array[0..5] of Ttest;
i,j : integer;
t : Ttest ;
begin
Randomize;
//初始化一个数组
for i:= 0 to 5 do
begin
fArray[i].data := Random(100);
fArray[i].index := i;
Memo1.Lines.Add(Format('数据:%d;序号:%d',[fArray[i].data,fArray[i].index]));
end;

//排序
for I := High(fArray) downto Low(fArray) do
for J := Low(fArray) to High(fArray) - 1 do
if fArray[J].data > fArray[J + 1].data then
begin
T := fArray[J];
fArray[J] := fArray[J + 1];
fArray[J + 1] := T;
end;

//显示结果
for i:= 0 to 5 do
Memo2.Lines.Add(Format('数据:%d;序号:%d',[fArray[i].data,fArray[i].index]))

end;

end.
jaspcloud 2006-12-15
  • 打赏
  • 举报
回复
.......就是
A[0]=4
A[1]=5
A[2]=3 ...
可见:
A[1]最大,其序号A[i]的i=1
A[0]第二,其序号A[i]的i=0
A[2]第三, 其序号A[i]的i=2
所以:
要求获得:
B[0]=1
B[1]=0
B[2]=2...
wudi_1982 2006-12-15
  • 打赏
  • 举报
回复
没看动啥意思

如果只是排序,DELPHI自带的关于线程的DEMO中有排序算法。
jaspcloud 2006-12-15
  • 打赏
  • 举报
回复
在线等ing~

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧