快速排序
2017-01-29 21:53
106 查看
题目描述
利用快速排序算法将读入的N个数从小到大排序后输出。
快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。)
输入输出格式
输入格式:
输入文件sort.in的第1行为一个正整数N,第2行包含N个空格隔开的正整数a[i],为你需要进行排序的数,数据保证了A[i]不超过1000000000。
输出格式:
输出文件sort.out将给定的N个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入样例#1:
5
4 2 4 5 1
输出样例#1:
1 2 4 4 5
说明
这只是一个十分简单的排序,只要用快排就行了!
程序如下:
利用快速排序算法将读入的N个数从小到大排序后输出。
快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。)
输入输出格式
输入格式:
输入文件sort.in的第1行为一个正整数N,第2行包含N个空格隔开的正整数a[i],为你需要进行排序的数,数据保证了A[i]不超过1000000000。
输出格式:
输出文件sort.out将给定的N个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入样例#1:
5
4 2 4 5 1
输出样例#1:
1 2 4 4 5
说明
这只是一个十分简单的排序,只要用快排就行了!
程序如下:
const maxn=100000; var a:array[1..maxn] of longint; i,n:longint; procedure qsort(l,r:longint); var i,j,key,temp:longint; begin if l>=r then exit; i:=l; j:=r; key:=a[l+random(r-l+1)]; repeat while (a[i]<key) do inc(i); while (a[j]>key) do dec(j); if i<=j then begin temp:=a[i]; a[i]:=a[j]; a[j]:=temp; inc(i);dec(j); end; until i>j; qsort(l,j); qsort(i,r); end; begin readln(n); for i:=1 to n do read(a[i]); randomize; qsort(1,n); for i:=1 to n do write(a[i],' '); end.
相关文章推荐
- 划分--快速排序
- 快速排序
- javascript--快速排序
- 005_011 Python 快速排序 不要使用,尽量使用自带的sort
- 排序--快速排序--详细分析
- 交换排序——冒泡排序和快速排序,C++代码实现
- 快速排序
- 《算法导论》笔记 第7章 7.3快速排序的随机化版本
- 经典排序算法 -----冒泡排序,插入排序,快速排序,归并排序,堆排序
- 黑马程序员:快速排序及随机化算法
- 常用的排序:快速排序、合并排序(稳定)--合并排序
- 2016.8.23--快速排序
- 数据结构与算法——快速排序
- 十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 快速排序
- 快速排序、堆排序、归并排序的python实现
- 快速排序
- 快速排序2
- 快速排序的思路
- 每天一种算法--快速排序