快速排序C++实现
快速排序,或者说快排,是一个常见的排序算法,效率蛮高的。它通过分治法的方式,将待排序的序列分成两个子序列,分别排序后再合并。虽然最坏情况的时间复杂度是 O(n²),但通过一些优化(比如随机化),它的表现通常还是相当不错的。
如果你用 C++来实现这个算法,代码也挺。你只需要一个`run()`函数来执行分治操作,`QuickSort()`函数作为外部接口来调用它,而`main()`函数则用来测试这个排序功能。你会发现,实际写起来并没有想象的那么复杂。
例如,下面是`run()`函数的一个实现:
void run(int* pData, int left, int right) {
int i, j;
int middle, iTemp;
i = left;
j = right;
middle = pData[(left + right) / 2]; //选择中间元素作为基准值
do {
while ((pData[i] < middle> middle) && (j > left)) {
j--;
}
if (i <= j) {
iTemp = pData[i];
pData[i] = pData[j];
pData[j] = iTemp;
i++;
j--;
}
} while (i <= j);
if (left < j>
你会看到,排序的核心就是通过基准值来分割序列,递归地对左右子序列进行。
如果你正在做 C++项目并需要排序,快排无疑是个棒的选择,代码简单、效率高。只要数据量不是大,最坏情况几乎不会碰到。你也可以尝试结合一些优化策略,比如随机化基准值选取,进一步提升稳定性。
952B
文件大小:
评论区