快速排序
来源:互联网 发布:pixlr软件 编辑:程序博客网 时间:2024/06/04 19:12
未测试边界条件
#include <iostream>using namespace std;#define METOHD_1 0#define METOHD_2 0#define METOHD_3 1void swap(int &a, int &b){ int tmp = a; a = b; b = tmp;}int partition(int a[], int left, int right){#if METOHD_1 //取第一个元素作为枢纽元 int tmp = a[left]; int i = left; int j = right; while(i < j){ while(i < j && a[j] > tmp) --j; if (i < j){ a[i] = a[j]; ++i; } while(i < j && a[i] < tmp) ++i; if (i < j){ a[j] = a[i]; --j; } } a[i] = tmp; return i;#endif#if METOHD_2 //取最后一个元素作为枢纽元 int mid = left - 1; for (int i = left; i < right; ++i){ if (a[i] < a[right]){ ++mid; if (mid != i) swap(a[mid], a[i]); } } ++mid; swap(a[mid], a[right]); return mid;#endif#if METOHD_3 //取第一个元素作为枢纽元(最简便的方式) int mid = left; for (int i = left + 1; i <= right; ++i){ if (a[i] < a[left]){ ++mid; if (mid != i) swap(a[mid], a[i]); } } swap(a[mid], a[left]); return mid;#endif}void qsort(int a[], int left, int right){ if (left >= right) return; int mid = partition(a, left, right); qsort(a, left, mid - 1); qsort(a, mid + 1, right);}int main(){ int a[10] = {5, 9, 3, 4, 6, 1, 2, 0, 7, 8}; qsort(a, 0, 9); for (int i = 0; i < 10; ++i) cout << a[i] << endl; //int a = 1; int b = 2; //swap(a, b); int ttt = 0; return 0;}
参考 http://www.cnblogs.com/TenosDoIt/p/3665038.html
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 如何编写burpsuite联动sqlmap的插件
- 程序员的思维训练
- Eclipse远程提交MapReduce任务到Hadoop集群
- 通用型安卓拒绝服务漏洞报告&检测工具
- Java语言基础系列之1--用IDEA编写HelloWorld
- 快速排序
- js中用cssText设置css样式
- dos set 环境变量的方法
- 面试算法_出现次数最多的字母(含大小写)
- Python脚本中的#!/usr/bin/python
- Android开发之java基础(-)
- 神经网络与深度学习
- Linux学习30_configure: error: no acceptable C compiler found in $PATH 问题解决
- VS 下Qt工程不能生成moc文件的解决方法