快速排序
来源:互联网 发布:网站数据久了数据很多 编辑:程序博客网 时间:2024/05/18 00:57
快速排序思路如下:
任选数组中一个元素作为关键字,,一趟partition下来的结果保证该关键字大于其左侧的元素,小于其右侧的元素;然后对其左侧和右侧的元素做partition操作;这么递归下去即可排序。
代码如下:
#include <iostream>using namespace std;// 对A[low]...A[high]进行分区int partition(int A[], int low, int high){// 将A[low]设置为关键字int pivot = A[low];while (low < high){while (low < high && A[high] >= pivot){high--;}A[low] = A[high];while (low < high && A[low] <= pivot){low++;}A[high] = A[low];}// 还原pivot到相应的位置A[low] = pivot;return low;}void QuickSort(int A[], int low, int high){if (low < high){// 获得pivot的位置int pivotLoc = partition(A, low, high);QuickSort(A, low, pivotLoc-1);QuickSort(A, pivotLoc+1, high);}}void main(){// 初始化要排序的数组int A[] = {4,1,3,2,16,9,10,14,8,7};// 排序QuickSort(A, 0, sizeof(A)/sizeof(int)-1);// 打印排序结果for (int i=0; i<sizeof(A)/sizeof(int); i++){cout<<A[i]<<" ";}cout<<endl;}
结果如下:
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- QML Data Models 数据模型<一>
- 34个有用的ActionScript 3.0的API
- 加快Myeclipse启动速度
- Tweener 語法實習
- 不同的编译器、不同的硬件平台以及不同的操作系统,最终编译出来的结果一样吗?为什么?
- 快速排序
- [Python源码学习]之bytecode
- 人生感悟:如何做一个高价值的员工
- Flash开发者要了解的若干内容
- 死锁
- bash shell shortcuts
- 最短路
- seo中什么样的外链才算是高质量的
- MFC之计算器