数组1排序,同时将数组1排序前的序号值按排序后的顺序存入数组2,求一简单算法(代码少优先,速度其次)
例:A[0]=4
A[1]=5
A[2]=3 ...A[1]最大,A[0]第二,A[2]第三
则取A的原序号->BB[0]=1
B[1]=0
B[2]=2...3q~

解决方案 »

  1.   

    没看动啥意思如果只是排序,DELPHI自带的关于线程的DEMO中有排序算法。
      

  2.   

    .......就是
    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...
      

  3.   

    unit Unit1;interfaceuses
      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.
      

  4.   

    就是要这个效果!!我郁闷了1天啊!!!!万万分感谢!!!!!!!;
    3Q3Q3Q3Q;