向云龙是受:急求pascal中速度最快的排序,但要稳定的

来源:百度文库 编辑:中科新闻网 时间:2024/05/06 02:56:01
如题
这个数组的数是无比的多和大的哦`````````````
否则我就自己用冒泡啦`````````

快速排序和堆排序
nlogn的

快速排序:
procedure sort(l,r: longint);
var
i,j,x,y: longint;
begin
i:=l;j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if not(i>j) then begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);dec(j);
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
对有n个数的数组a进行排序,一开始在主程序中执行sort(1,n);

楼上的的不信可以自己试一下,100000个数字不会超过1秒(学校P2的机子,我家的只要0.2秒),冒泡and选择排序是n^2复杂度的绝对更慢

楼上的说了你自己试一下

楼上的Shek_PS,递归可是最耗时间,空间的,而且还不稳定
要不就用选择,要不就选冒泡,别的办法太复杂,
建议用冒泡
楼下的,你说哪个快?可哪个一般用于分段寻找数字,而且递归不稳定

希尔或者哈西?不会要写散列表吧。给个具体需要排序的数组。是否最快,要看输入对象的特点。

二叉树排序应该算是最快的吧