基本快速排序
2016-04-05 16:46
399 查看
基本思路:
每次确定数组中的中间那个数,然后分治两端的数组,直到要分治的数组只有一个数;
每次确定数组中的中间那个数,然后分治两端的数组,直到要分治的数组只有一个数;
#include<stdio.h> void quicksort(int a[10000],int first,int last) { if(first<last) //如果该数组只有一个数即跳出, { int i=first,j=last; int key=a[first]; //每次去第一个数作为key; while(i<j) //如果i==j,即已经达到目标:把整个数组中大于key的放在后面,把小于key的放在前面 { while(i<j&&a[j]>=key) { j--; } if(i<j) { a[i]=a[j]; } while(i<j&&a[i]<key) { i++; } if(i<j) { a[j]=a[i]; j--; } } a[i]=key; //中间值key; quicksort(a,first,i-1); //然后分治,中间的数已经确定下来了,然后分治前面和后面的数组 quicksort(a,i+1,last); //如果分治的数组只有一个数,即已经排好序了 } } int main() { int n,a[10000],i; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } quicksort(a,0,n-1); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); } }
相关文章推荐
- UNICODE,GBK,UTF-8区别
- 新手提问,按F12那个控制台(?)在右边,怎么设置在下边?
- Java开发中的23种设计模式详解
- 构建之法——第四章读后感
- 如何将中缀式转化成前缀式和后缀式
- maven加载本地库
- springMVC+uploadify3.1 文件上传 demo
- Probe监控Tomcat
- 由外向内生成N*N矩阵
- CF 553A. Kyoya and Colored Balls 组合数学 和dp有点关系
- 输入挂
- 第二章、1.一切都是对象
- 作者签名赠书,免费学习软件编程
- SVM中不理解的点的整理
- ffmpeg的使用
- Flex 布局教程:语法篇
- android中关于weight宽度的算法
- setValuesForKeysWithDictionary奔溃问题
- SURF特征匹配算法
- Eclipse下链接第三方库(opencv,ubuntu)