帮看快速排序哪里错了。
noip吧
全部回复
仅看楼主
level 8
dugucloud 楼主
[一楼喂熊]
为了使之看起来更符合大众胃口,以下程序省略第一行。
2010年11月02日 10点11分 1
level 8
dugucloud 楼主

function integer partition (var array integer arr of, integer head, integer tail)
BEGIN
     integer i;
     integer flag;
     integer tmp;
     flag=head-1;
     FOR (i,head,to, tail-1) DO
     BEGIN
         IF arr[i]<=arr[tail] then
         BEGIN
             inc(flag);
             tmp = arr[i];
             arr[i] = arr[flag];
             arr[flag] = tmp;
             /* arr[flag] = arr[i] xor arr[flag];
             arr[i]     = arr[i] xor arr[flag];
             arr[flag] = arr[i] xor arr[flag]; */
         END;
     END;
     inc(flag);
     /* arr[flag] = arr[tail] xor arr[flag];
     arr[tail] = arr[tail] xor arr[flag];
     arr[flag] = arr[tail] xor arr[flag]; */
     tmp = arr[flag];
     arr[flag] = arr[tail];
     arr[tail] = tmp;
     return flag;
END;
procedure quicksort (var array integer arr of, integer head, integer tail)
BEGIN
     integer flag;
     IF head<tail then
     BEGIN
         flag = partition (arr,head,tail);
         quicksort (arr,head,flag-1);
         quicksort (arr,flag+1,tail);
     END;
END;
program
begin
     integer i;
     integer n;
     integer arr[100];
     read(n);
     FOR (i,0,to,n) DO
         read(arr[i]);
     quicksort(arr,0,n-1);
     FOR (i,0,to,n) DO
         writeln(arr[i]);
end

2010年11月02日 10点11分 2
level 8
于是这到底是C的还是P的……双语系内牛满面……
2010年11月02日 11点11分 3
level 8
dugucloud 楼主
程序可以编译运行,但是输出结果没有排好序。
2010年11月02日 11点11分 4
level 13
3L+1
2010年11月02日 11点11分 5
level 8
dugucloud 楼主
我承认这是可以用C编译的伪代码。
2010年11月02日 11点11分 6
level 8
家里只有FP的表示DEBUG无能……
2010年11月02日 11点11分 7
level 7
只懂pas
2010年11月02日 11点11分 8
level 9
写C的话掉系统快排吧。
int cmp(const void *a, const void *b)   【自己写的比较函数,返回大于0则交换】
{
    return *(int*)a - *(int*)b; //对于每种类型的都强制转换再比较就行了。
}
qsort( 要排序的结构的起始位置, 要排序的结构的个数, 每个结构的大小, cmp)
例子:
int a[1003];
//从a[1]到a[n]排序:
qsort( a+1, n, sizeof(a[0]), cmp );

2010年11月02日 13点11分 9
level 5
这是神马……C和P的混血儿吗?[瀑布汗~]
2010年11月02日 13点11分 10
level 7
LZ 你还少了很多#define吧
我见过某种一堆define之后 程序可以写成这样…………不过表示完全没有必要……
2010年11月02日 13点11分 11
level 7
LZ
其实是来考我们的吧?
不是xor的问题…………
不过表示看着一堆begin end 蛋疼…………
2010年11月02日 13点11分 12
level 9
还有 var array integer arr of……
神马玩意……
PS:我是5L
2010年11月02日 13点11分 13
level 8
dugucloud 楼主
其实我是为了防止大家被弄晕才不把宏定义贴出来的,明天贴。
2010年11月02日 15点11分 14
level 6
Cer内牛满面。。
2010年11月02日 15点11分 15
level 1
[汗]
2010年11月02日 15点11分 16
level 5
表示已经头晕。。。
2010年11月03日 00点11分 17
1