回 帖 发 新 帖 刷新版面

主题:求pascal快排实例试题与答案

[color=FF0000]求pascal快排实例试题与答案
各位有的话就麻烦分享下~~~~~~~
在下感激啊~~~~~~[em4][em4][em4][/color]

回复列表 (共7个回复)

沙发

下面程序有错吗?




program qsort;
var l,r,i:longint;
    a:array[1..100] of longint;



procedure qsort(l,r:longint);
var i,j:longint;
    mid:real;
begin
  i:=l;j:=r;mid:=a[(l+r)div 2];
  repeat
  while a[i]<mid do inc(i);
  while a[j]>mid do dec(j);
  if i<=j then begin
    swap(a[i],a[j]);
    inc(i);dec(j);end;
  until i>j;
  if j>l then qsort(l,j);
  if i<r then qsort(i,r);
end;

begin
 readln(r);
 for i:=1 to r do
  read(a[i]);
  qsort(1,r);

 for i:=1 to r do
   write(a[i]);

 end.

板凳

应该没错
输出要:write(a[i],‘ ’)才好看

3 楼

靠!
别简写‘swap’函数就好了啥!!!
////////////////////////////////
program qsort;
var l,r,i,k:longint;        ////改之     
    a:array[1..100] of longint;



procedure qsort(l,r:longint);
var i,j:longint;
    mid:real;
begin
  i:=l;j:=r;mid:=a[(l+r)div 2];
  repeat
  while a[i]<mid do inc(i);
  while a[j]>mid do dec(j);
  if i<=j then begin
    k:=a[j];             //改之
    a[j]:=a[i];          //改之
    a[i]:=k;            //改之
    inc(i);dec(j);end;
  until i>j;
  if j>l then qsort(l,j);
  if i<r then qsort(i,r);
end;

begin
 readln(r);
 for i:=1 to r do
  read(a[i]);
  qsort(1,r);

 for i:=1 to r do
   write(a[i]);

 end.

4 楼

回楼上:PASCAL里也有swap函数的!!只不过此SWAP非彼SWAP,而且运行不稳定。。。
摘自MATRIX67的网站。。。

5 楼

swap:交换一个数据的高位字节和低位字节。(貌似是的)

6 楼

楼上正解....
其实是先把原数转成二进制数,然后再把前16位和后十六位交换(不足补0),再转成10进制,输出...

7 楼

其实说来说去,没把握的东西就先别用啊!
多谢楼上开导,今日懂swap了,呵呵!

我来回复

您尚未登录,请登录后再回复。点此登录或注册