求算法,A[0]=4 A[1]=8 A[2]=3 A[3]=1 得 B[0]=3 B[1]=

  • 主题发起人 主题发起人 flyat
  • 开始时间 开始时间
F

flyat

Unregistered / Unconfirmed
GUEST, unregistred user!
求算法,A[0]=4 A[1]=8 A[2]=3 A[3]=1 得 B[0]=3 B[1]=2 B[2]=0 B[3]=1 也就是B得到A排序的下标(50分)<br />求算法,
如 A[0]=4 A[1]=8 A[2]=3 A[3]=1
得 B[0]=3 B[1]=2 B[2]=0 B[3]=1
也就是B得到A排序的下标
 
楼住,不明白你的意思,b[0]是a[0]在a数组中的位置吗?可好象不队啊,
 
我来试试,献丑

uses math;
var
a:array [0..3] of integer=(4,8,3,1);
b:array [0..3] of integer;
function Getorder(i:integer):integer;
var x:integer;
begin
result:=0;
for x:=0 to Length(a) do
if i = a[x] then
begin
result:=x;
a[x]:=maxintvalue(a)+1;
break
end;
end;
procedure cacu;
var i, minv:integer;
begin
for i:=0 to Length(a) do
begin
minv:=minintvalue(a);
b:=Getorder(minv);
end;
end;
 
好啊你,不错
maxintvalue
minintvalue
本身是历遍循环体,
上面的代码四个遁环体,三个嵌入遁环
 
就是把A排一序吧。排序的算法很多呀。
然後對(原始或排好的)A循環一下,得到原始值在新組的的位置就是了。
總這排序時要保持原始的下標信息就是了。

 
to lichdr先去排序会折磨你,
其实这个应用挺广的,
两循环搞定
for I := High(A) downto Low(A) do
begin
H:=-2147483647 ;
for J := Low(A) to High(A) do
if H < A[J] then
begin
B:=J;
H:=A[J];
end;
A[B]:=-2147483647;
end;
真少人讨论,应该可再优化,但不打算讨论下去,:( [:(]
 
后退
顶部