快速排序
来源:互联网 发布:和玛丽苏开玩笑 知乎 编辑:程序博客网 时间:2024/06/10 08:44
今天暑期集训的第一天,浑浑噩噩的度过了一天。感觉有一点手足无措,什么都没有学到,急切地感觉到我需要一份假期学习计划,不能这样漫无目的的学习,荒度时光,既然留在这里了,就一定要学到一点东西,哪怕只是一点点,明天再简单地学一点,在明天之类就一定要拟定一份假期学习计划。今天学的东西是一些简单的排序,本来早就该掌握的,我却到现在才来慢慢的学。
快排的基本思想就是:在一系列数中选定一个作为标准,然后挨个与之比较,比他大的放在一边,比他小的放在另一边。再在这两边分别用此种方法,依次递归,直到排序完成。我的方法是选定最右边的数作为标准数。
例题是pku2388.
以下是快排的代码:
#include<cstdio>#include<iostream>#define N 120using namespace std;void QuickSort(int left ,int right ,int a[]){ if(right<left+2){ if(a[left]>a[right]) swap(a[left], a[right]); return ; } int i=left, j=right, x = a[right]; while(i<j){ while(a[i]<x && i<j) i++; while(a[j]>=x && i<j) j--; swap(a[i], a[j]); } swap(a[i], a[right]); if(left < i-1) QuickSort(left, i-1, a); if(i+1 < right) QuickSort(i+1, right, a);}int main(){ int n; int b[N]; scanf("%d", &n); for(int i = 0; i<n; i++) scanf("%d", &b[i]); QuickSort(0,n-1,b); for(int i = 0; i<n; i++) printf("%d ", b[i]); return 0;}以下是例题代码:
<span style="font-size:18px;">#include<stdio.h>#include<cstring>#include<algorithm>#include<iostream>#define N 10005using namespace std;void qsort(int left ,int right, int a[]){ int i , j, x; if(right<left+2){ if(a[left]>a[right]) swap(a[left], a[right]); return ; } i = left, j = right, x = a[right]; while(i<j){ while(a[i]<x && i<j) i++; while(a[j]>=x && i<j) j--; swap(a[i], a[j]); } swap(a[i], a[right]); if(left<i-1) qsort(left, i-1, a); if(i+1<right) qsort(i+1, right,a);}int main(){ int n ; int a[N]; scanf("%d", &n); for(int i = 0; i<n; i++) scanf("%d",&a[i]); qsort(0,n-1,a); int r = a[n/2]; printf("%d\n", r); return 0;}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 7.14老师需要的修改 关于多路径相关性
- hdu1003 动态规划的入门题
- 文件夹变扩展名
- 3-4. 成绩转换(15)
- POJ2392 Space Elevator 动态规划
- 快速排序
- hibernate学习的那些事之对象关系映射文件--domain对象.hbm.xml
- 换磁致倥涟啡站够迸院霖何畏秦期
- java jvm 性能监控和故障处理工具
- 某库小结1
- javascript定义对象写法
- Gson将字符串转换成JsonObject和JsonArray
- HDU 1042 N! 阶乘(大数)
- Java学习网站大全