急,数组1排序后->数组2,求算法!3Q
2008-10-14 16:32
176 查看
急,数组1排序后->数组2,求算法!3Q Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061215205531143.html
数组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~
在线等ing~
没看动啥意思
如果只是排序,DELPHI自带的关于线程的DEMO中有排序算法。
.......就是
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...
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.
靠,反了,我是按照从小到大排序的,你调整一下就可以了。
就是要这个效果!!我郁闷了1天啊!!!!万万分感谢!!!!!!!;
3Q3Q3Q3Q;
http://www.delphi2007.net/DelphiBase/html/delphi_20061215205531143.html
数组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~
在线等ing~
没看动啥意思
如果只是排序,DELPHI自带的关于线程的DEMO中有排序算法。
.......就是
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...
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.
靠,反了,我是按照从小到大排序的,你调整一下就可以了。
就是要这个效果!!我郁闷了1天啊!!!!万万分感谢!!!!!!!;
3Q3Q3Q3Q;
相关文章推荐
- 【算法】冒泡排序(从小到大) 排序范围(0~n-1)n为数组元素个数
- 黑马程序员-----JAVA基础--数组排序的两种算法
- [算法]_[对数组内的数字进行从小到大排序]
- 今日算法 两个升序的数组进行排序
- 对数组进行排序、求最大值和求元素和的算法都编写为函数模板,采用相关数据进行测试。
- 6.对数组进行排序、求最大值和求元素和的函数采用静态成员函数的方式封装成数组算法类模板ArrayAlg,并采用相关数据进行测试。
- 数据结构和算法-005 数组排序 二分法检索
- 算法研究之合并两个已排序的数组java版
- javascript:算法之数组sort排序
- 左神算法 未排序正数组中累加和为给定值的最长子数组长度
- 【慢慢学算法】:数组排序(一题多做)
- 数据结构和算法-002 数组排序 冒泡排序
- 算法讨论(七)--已排序数组中寻找两个数,其和等于给定的数
- ios 按照拼音对数组中的中文字符串排序的算法
- 随机生成10个100以内的整数,把数据从小到大排序,而且算法复杂度只能是1(利用数组的索引也可...
- 算法练习——排序后的数组删除重复数字
- 数据结构——算法之(005)(输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字)
- 算法训练 数组排序去重
- C# 反射算法 数组排序
- 算法--数组冒泡排序和选择排序原理分析