求各种排序算法的比较
我是pascal初学者,对插入排序、冒泡排序、归并排序、基数排序、二叉树排序、堆排序、快速排序、希尔排序、选择排序、桶排序、拓扑排序等基本的排序算法的时间复杂性、空间复杂...
我是pascal初学者,对插入排序、冒泡排序、归并排序、基数排序、二叉树排序、堆排序、快速排序、希尔排序、选择排序、桶排序、拓扑排序等基本的排序算法的时间复杂性、空间复杂性、最好最坏情况比较、算法思路步骤不同、排序方法不同、是否稳定搞不清楚,望高手指教
展开
3个回答
展开全部
给你一个国家集训队的快排吧,这个应该够用了。
这个是对a数组从小到大排序,把这个添加到任何程序中都很快。这个肯定要比堆排序快。对于插入排序快的快排肯定要较慢。但这个比较稳定,要不国家集训队怎么用它呢!!!!!!
procedure qsort(l,r:longint);
var
i,j,x,yy:longint;
begin
i:=l;j:=r;x:=a[(i+j) shr 1];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
yy:=a[i];a[i]:=a[j];a[j]:=yy;
inc(i);dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if l<j then qsort(l,j);
end;
这个是对a数组从小到大排序,把这个添加到任何程序中都很快。这个肯定要比堆排序快。对于插入排序快的快排肯定要较慢。但这个比较稳定,要不国家集训队怎么用它呢!!!!!!
procedure qsort(l,r:longint);
var
i,j,x,yy:longint;
begin
i:=l;j:=r;x:=a[(i+j) shr 1];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
yy:=a[i];a[i]:=a[j];a[j]:=yy;
inc(i);dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if l<j then qsort(l,j);
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询