首页 > 编程语言 > 详细

双关键字快速排序

时间:2016-02-05 18:57:35      阅读:225      评论:0      收藏:0      [点我收藏+]

快排双关键字

 1 var
 2 i,j,l,m,n:longint;
 3 a,b:array[0..10000]of longint;
 4 procedure px(l,r:longint);
 5  var
 6  i,j,k,m,x,y:longint;
 7  begin
 8   i:=l;
 9   j:=r;
10   x:=a[(i+j) div 2];
11   y:=b[(i+j) div 2];
12  repeat
13   while (a[i]<x)or((a[i]=x)and(b[i]<y)) do inc(i);
14   while (a[j]>x)or((a[j]=x)and(b[j]>y)) do dec(j);
15   if i<=j then
16   begin
17      k:=a[i];a[i]:=a[j];a[j]:=k;
18      k:=b[i];b[i]:=b[j];b[j]:=k;
19     inc(i);
20     dec(j);
21    end;
22   until i>j;
23   if i<r then px(i,r);
24   if j>l then px(l,j);
25 end;
26  begin
27  readln(n);
28  for i:=1 to n do
29   begin
30    read(a[i]);
31    read(b[i]);
32   end;
33  px(1,n);
34  for i:=1 to n do
35   writeln(a[i], ,b[i]);
36 end.

 

双关键字快速排序

原文:http://www.cnblogs.com/vacation/p/5183258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!