快速排序

来源:互联网 发布:网站数据久了数据很多 编辑:程序博客网 时间: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;}

结果如下:



原创粉丝点击