pascal快排

[复制链接]
查看11 | 回复5 | 2011-10-3 13:00:08 | 显示全部楼层 |阅读模式
功能:快速排序输入:数组名称(也就是数组首地址)、数组中起止元素的下标算法思想简单描述:快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。它是由C.A.R.Hoare于1962年提出的。显然快速排序可以用递归实现,当然也可以用栈化解递归实现。下面的函数是用递归实现的,有兴趣的朋友可以改成非递归的。快速排序是不稳定的。...
回复

使用道具 举报

千问 | 2011-10-3 13:00:08 | 显示全部楼层
procedure quick(l,r:longint);//快排是二分的经典应用varx,y,i,j:longint;beginx:=c[(l+r) div 2];i:=l;j:=r;//c数组为要排序的数组repeatwhile c>x do inc(i);//保证a均大于a[x];while c[j]<x ...
回复

使用道具 举报

千问 | 2011-10-3 13:00:08 | 显示全部楼层
给你个标程!pascal附带的,老师要求我们背的....... procedure sort(l,r: longint);
var
i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];...
回复

使用道具 举报

千问 | 2011-10-3 13:00:08 | 显示全部楼层
冒泡:从大到小:var i,j,n,t:longint;
a:array[1..100000]of longint;begin read(n); for i:=1 to n do read(a); for i:=1 to n-1 dofor j:=i+1 to n doif a<a[j] then...
回复

使用道具 举报

千问 | 2011-10-3 13:00:08 | 显示全部楼层
procedure qsort(s,e:longint);var
i,j,t,mid:longint;begin
i:=s;j:=e;mid:=a[(s+e) div 2];
repeat
while a<mid do
...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行