簡單的算法問題?(100分)

S

stuwe

Unregistered / Unconfirmed
GUEST, unregistred user!
求一最佳的排序算法(超過10000個數的排序)
 
没有哪个排序方法是最佳的.
只有对特定的待排序数据才有可能找到所谓的最佳.
 
在教科书中有啊
 
我那些數據是隨機數據,沒有特定的

to:lgxyy
我沒讀過書哦,那裡去找教科書啊??[:(][:(][:(]
 
马尔加排序法最快
 
数据结构的数总能找着吧
就像什么中国的程序员考试的教材
通篇在讲这种算法啊
 
to:All
我沒讀過pascal啊,叫我去看什麼書啊
我要的是代碼[:(]

我寫了一個,每個數都去比較,太慢了,10000記錄都不知道要運行到什麼時候
 
看不懂书成了理由了,什么世道嘛.
 
delphi有demo在 Demos/Threads 下面。
是一个quicksort, 非常快的。
 
to:cee
有看過

to:LeeChange
沒事開開玩笑嗎[:D][:D]
 
随便找个卖计算机相关的书的书店,找一本C语言教程看看就行了,什么冒泡排序,折半
查找排序,二分法排序...都有详细的小例子介绍的,还将了什么样的排序使用什么样的
数据集合,以及每种排序方法的优缺点。
 
to:wangsir
問題是我現在就要用到測試啊
 
现在好办了,因为有我了
你把它放到一个tstringlist中
然后执行tstringlist.sort就搞定了,很快的,试试吧,不要忘记给我分
 
随便一个,冒泡也可以阿,10000个数据不需要比较10000次。

procedure TForm1.Button1Click(Sender: TObject);
var a: array[1..20000] of Integer;temp,i,j:integer;
begin
j:=1;
for i:=20000 downto 1 do
begin
a[j]:=i;
j:=j+1;
end;
showMessage(intToStr(a[666])+'|'+timeToStr(now));

for i:=1 to 20000 do
begin
for j:=1 to 20000-i do
begin
if (a[j]>a[j+1]) then
begin
temp:=a[j+1];
a[j+1]:=a[j];
a[j]:=temp;
end;
end;
end;
showMessage(intToStr(a[666])+'|'+timeToStr(now));
end;

end.
 
to:nullx
你這個算法我怎麼看好像覺得更慢啊
for i:=1 to 20000 do
begin
for j:=1 to 20000-i do//這裡不是有很好沒用的循環嗎([red]不是哦,原來是錯誤的[/red])
begin
if (a[j]>a[j+1]) then
begin
temp:=a[j+1];
a[j+1]:=a[j];
a[j]:=temp;
end;
end;
end;

不要這樣啦,寫一些好一點的,效率比較高的我就給分
 
delphi自己的,你测试一下快不快?完了别忘记说一声怎样测的?
procedure QuickSort(var A: array of Integer
iLo, iHi: Integer);
var
Lo, Hi, Mid, T: Integer

begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi) div 2]

repeat
while A[Lo] < Mid do Inc(Lo)

while A[Hi] > Mid do Dec(Hi);
if Lo <= Hi then
begin
// VisualSwap(A[Lo], A[Hi], Lo, Hi)

T := A[Lo]

A[Lo] := A[Hi];
A[Hi] := T

Inc(Lo)

Dec(Hi)

end;
until Lo > Hi

if Hi > iLo then QuickSort(A, iLo, Hi)

if Lo < iHi then QuickSort(A, Lo, iHi)

// if Terminated then Exit;
end;
 
這個我都有看過
試都試過,不行,demo裡面可以運行,但我不是用數組的
 
>//這裡不是有很好沒用的循環嗎([red]不是哦,原來是錯誤的[/red])
看不懂你的意思啊@_@

你把你写的算法贴出来看看阿。我只懂这一个算法。
 
to:nullx
是我自己看錯了
你這個排序沒什麼改進的地方,記錄多時還是一樣
 
你的数据不是数组那你的数据是什么?
1什么类型的数据
2怎么存放
3有没有数据的例子给咱看看,我就不信搞不到一个让你信服的快排算法!
 
顶部