永发信息网

求快速排序的例子,Free Pascal的

答案:4  悬赏:50  手机版
解决时间 2021-07-30 23:27
  • 提问者网友:感性作祟
  • 2021-07-30 15:22
下星期就复赛了,求一个快排的例子来看看,复习一下
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-07-30 17:00
program kuaipai;
var
i,j,k,l,m,n:longint;
a:array[1..1000] of longint;
procedure qsort(m,n:Longint); var
i,j,k,t:longint;
begin
i:=m; j:=n; k:=a[(i+j) shr 1];
repeat
while a[i]>k do inc(i);
while a[j]<k do dec(j);
if i<=j then
begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
inc(i); dec(j);
end;
until i>j;
if m<j then qsort(m,j);
if i<n then qsort(i,n);
end;
begin
readln(k);
for i:=1 to k do read(a[i]);
qsort(1,k);
j:=0;
for i:=k downto 1 do
begin inc(j);write(a[i]:5);if j mod 10=0 then writeln; end;
end.格式:一行十个,你可以自己改,还有数组的大小。不懂可以加我Q。我也是OIER.
全部回答
  • 1楼网友:第四晚心情
  • 2021-07-30 19:14
var a:array[1..30000] of longint; s,i,j,k,n,m,x:longint; procedure try(h,t:longint); var i,j,x:longint; begin i:=h; j:=t; x:=a[i]; repeat while (i<j) and (a[j]>=x) do j:=j-1; if i<j then begin a[i]:=a[j]; i:=i+1; end; while (i<j) and (a[i]<=x) do i:=i+1; if i<j then begin a[j]:=a[i]; j:=j-1; end; until i=j; a[i]:=x; i:=i+1; j:=j-1; if i<t then try(i,t); if h<j then try(h,j); end;
  • 2楼网友:玩家
  • 2021-07-30 18:53
#include<stdio.h> int partition(int a[],int p,int r) { int x,temp; int i,j; x=a[r]; i=p-1; for(j=p;j<=r-1;j++) { if(a[j]<=x) { i=i+1; temp=a[i]; a[i]=a[j]; a[j]=temp; } } temp=a[i+1]; a[i+1]=a[r]; a[r]=temp; return i+1; } void quicksort(int a[],int p,int r) { int q; if(p<r) { q=partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } } void main() { int i,k; int b[100]; int m=0; printf("请输入要排序的个数: "); scanf("%d",&k); printf("请输入数:\n"); for(i=0;i<k;i++) scanf("%d",&b[i]); quicksort(b,m,k-1); for(i=0;i<k;i++) printf("%d ",b[i]); }
  • 3楼网友:一把行者刀
  • 2021-07-30 17:31
var a:array[0..9] of integer = (6,1,3,9,2,5,4,7,0,8); i:integer; procedure quicksort(l,r:longint); var x,i,j,t :longint; begin x:=a[random(r-l+1)+l]; (*随机选取支点*) i:=l;j:=r; repeat while a[i]<x do inc(i); while a[j]>x do dec(j); if i<=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; inc(i);dec(j); end until i>j; if l<j then quicksort(l,j); if i<r then quicksort(i,r); end; begin quicksort(0, 9); for i:=0 to 9 do write(a[i], ' '); readln; end.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯