阅读背景:

【排序算法】快速排序

来源:互联网 
代码如下 /* 描述:快速排序实现及验证,快速排序是不稳定算法,比如5,5,5,4 */ #include <iostream> using namespace std; /* 描述:用于将排序数列分为两组,并返回中轴值位置 */ int Partition(int arr[], int iStart, int iEnd) { int iPivotVal = arr[iEnd]; int iPivotPos = iStart - 1; int iTmp = 0; for(int j = iStart; j < iEnd; j++) { if(arr[j] <= iPivotVal) { iPivotPos ++; iTmp = arr[j]; arr[j] = arr[iPivotPos]; arr[iPivotPos] = iTmp; } } arr[iEnd] = arr[++iPivotPos]; arr[iPivotPos] = iPivotVal; return iPivotPos; } /* 描述:快速排序 */ void QuickSort(int arr[], int iStart, int iEnd) { if(iStart < iEnd) { int iPivotPos = Partition(arr, iStart, iEnd); QuickSort(arr, iStart, iPivotPos - 1); QuickSort(arr, iPivotPos + 1, iEnd); } } /* 描述:输出序列 */ void Output(int iArr[], int iLen) { for(int i = 0; i < iLen; i++) { cout << iArr[i] << " "; } } int main() { int arr[] = {2,8,7,1,3,5,6,4}; int iLen = sizeof(arr)/sizeof(arr[0]); Output(arr,iLen); QuickSort(arr, 0, iLen - 1); cout << "After Sort" << endl; Output(arr, iLen); } 分区流程 代码如下 /* 描述:快速排序实现及验证,快速排序是不稳定算法,比如5,5,5,4 */ #inc



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: