快排
2015-07-22 17:20
232 查看
思路:以end为对象,进行比较,小的放左边,大的放右边,然后用递归
#include<stdio.h>
int nice(int m[],int left,int right){
int j=left-1,temp;
for(int i=left;i<=right;++i){
if(m[i]<=m[right])j++,temp=m[j],m[j]=m[i],m[i]=temp;
}
return j;
}
int quiksort(int m[],int left,int right){int middle;
if(left<right){
middle=nice(m,left,right);
quiksort(m,left,middle-1);
quiksort(m,middle+1,right);
}
}
int main(){
int n,m[100010];
while(~scanf("%d",&n)){
for(int i=0;i<n;++i)scanf("%d",m+i);
quiksort(m,0,n-1);
for(int i=0;i<n;++i){
if(i)printf(" ");
printf("%d",m[i]);
}
}
return 0;
}
#include<stdio.h>
int nice(int m[],int left,int right){
int j=left-1,temp;
for(int i=left;i<=right;++i){
if(m[i]<=m[right])j++,temp=m[j],m[j]=m[i],m[i]=temp;
}
return j;
}
int quiksort(int m[],int left,int right){int middle;
if(left<right){
middle=nice(m,left,right);
quiksort(m,left,middle-1);
quiksort(m,middle+1,right);
}
}
int main(){
int n,m[100010];
while(~scanf("%d",&n)){
for(int i=0;i<n;++i)scanf("%d",m+i);
quiksort(m,0,n-1);
for(int i=0;i<n;++i){
if(i)printf(" ");
printf("%d",m[i]);
}
}
return 0;
}
相关文章推荐
- 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析
- 服务器故障分析处理
- Lowest Common Ancestor of a Binary Search Tree
- 删除apache的签名的shell脚本
- 在Ubuntu 12.04安装和设置Samba实现网上邻居共享
- 面试题1——等长数组及45度
- redis常用操作以及主从配置
- javaScript几个操作数组增减元素的函数
- Android平台使用SQLite数据库存储数据
- oracle 10g RAC重启步骤
- Android的NDK开发(4)——JNI数据结构之JNINativeMethod
- Android的NDK开发(4)——JNI数据结构之JNINativeMethod
- $http_raw_post_data 函数使用
- HDU 5294 Tricks Device(最短路+最小割)
- 谷歌浏览器限制端口
- 万万没有想到我今天找到这个已经丢失的账号
- 文件上传组件File,DiskFileItemFactory ,ServletFileUpload ,FileItem
- 线段树扫描线算法
- 【指南】关于HTML5,营销人应该知道的概念、方法和推广完全实战指南
- HDU 4740——The Donkey of Gui Zhou