######################关于排序的算法,各位请进来看一看######################(50分)

  • 主题发起人 主题发起人 var_
  • 开始时间 开始时间
V

var_

Unregistered / Unconfirmed
GUEST, unregistred user!
一个例子:我现在有些数如:5,6,7,1,9,3,4,我要让它们从小到在进行排序成:1,3,4,5,6,7,9。
我想要的是这种排序的所有不同的算法,(例如起泡法~~~等等)
[各位在下实属菜,望详解~~~]
 
冒泡;选择;插入;
 
~~~~~~~~~~~那,不知可否给出其算法也!!!!!!!!~~~~~~~~~~~~~~~
 
1.冒泡排序
procedure BubbleSort(var A: array of Integer);
var
I, J, T: Integer;
begin
for I := High(A) downto Low(A) do
for J := Low(A) to High(A) - 1 do
if A[J] > A[J + 1] then
begin
T := A[J];
A[J] := A[J + 1];
A[J + 1] := T;
end;
end;

2.选择排序
procedure SelectionSort(var A: array of Integer);
var
I, J, T: Integer;
begin
for I := Low(A) to High(A) - 1 do
for J := High(A) downto I + 1 do
if A > A[J] then
begin
T := A;
A := A[J];
A[J] := T;
end;
end;

3.快速排序
procedure TQuickSort.Sort(var A: array of Integer);
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
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);
end;

begin
QuickSort(A, Low(A), High(A));
end;
 
不好意思,改一下
procedure TQuickSort.Sort(var A: array of Integer);
改为
procedure OnQuickSort(var A: array of Integer);
 
哦~~~~~~~~~~~``
那不知还有否-------不妨全说出来~~~~~```
 
这样的算法速度都很慢的!
 
liyinwei 说的不错
 
那把更好的算法拿出来一看呀~~~~~~~~~~
 
其实不能简单的判断某种算法的快慢。
一种算法的快慢是要根据要排序的数据以及排序要求来决定的,没有一种算法是绝对快或绝对慢的。
 
delphi的demo里有一个多线程排序的例子,三种排序都有,你看看吧
 
哦,这三种即为常用的方法~~~
 
后退
顶部