#include <QCoreApplication>
#include <QVector>
// 快速排序函数
void quickSort(QVector<int>& arr, int low, int high) {
if (low < high) {
// 将数组分割成两部分,并获取分割点索引
int pivotIdx = partition(arr, low, high);
// 分别对左右两个子数组递归进行快速排序
quickSort(arr, low, pivotIdx - 1);
quickSort(arr, pivotIdx + 1, high);
}
}
// 划分函数,返回分割点索引
int partition(QVector<int>& arr, int low, int high) {
// 选取最后一个元素作为基准值
int pivot = arr[high];
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
// 如果当前元素小于基准值,则将其与较小元素交换位置
if (arr[j] < pivot) {
i++;
swap(arr[i], arr[j]);
}
}
// 将基准值放入其正确的位置,并返回该位置索引
swap(arr[i + 1], arr[high]);
return i + 1;
}
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QVector<int> arr = {9, 5, 2, 7, 1, 6};
quickSort(arr, 0, arr.size() - 1);
// 打印排序结果
for (int i = 0; i < arr.size(); i++) {
qDebug() << arr[i];
}
return a.exec();
}
这个示例代码使用了QT的QVector容器来存储待排序的整数数组。快速排序算法被封装在quickSort()
函数中,其中的partition()
函数用于划分数组并返回分割点索引。在main()
函数中,我创建了一个测试数组,并调用quickSort()
函数对其进行排序。最后,使用qDebug输出排序结果。