首页 > 学院 > 开发设计 > 正文

P1177 快速排序

2019-11-14 11:03:53
字体:
来源:转载
供稿:网友

题目描述

利用快速排序将N个数从小到大排序后输出。

样例输入

54 2 4 5 1

样例输出

1 2 4 4 5

思路

理想O(n log n)最差O(n^2)快速排序:首先任意选取一个数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这是一趟快速排序。var i,j,n:longint; a:array[1..1000000] of longint;PRocedure qsort(l,r:longint);var m,t:longint;begin i:=l;j:=r; m:=a[(l+r) div 2]; repeat while a[i]<m do inc(i); while a[j]>m 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 qsort(l,j); if i<r then qsort(i,r);end;begin readln(n); for i:=1 to n do read(a[i]); qsort(1,n); for i:=1 to n do write(a[i],' ');end.
上一篇:JUC之synchronized

下一篇:ZCMU-1434-糖果迷阵

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表