快速排序的定义其实我感觉有二分查找的意思在里面,就是左边和右边然后遍历查找,具体的做法我用c++来实现,也在里面做了一些注释,大家直接看代码吧
#include <iostream>
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 选择最后一个元素作为基准
int i = low - 1; // i初始化为最左边的元素的前一个
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++; // i指向比pivot小的元素后一个位置
std::swap(arr[i], arr[j]); // 交换arr[i]和arr[j]
}
}
std::swap(arr[i + 1], arr[high]); // 交换arr[i+1]和基准元素
return i + 1; // 返回基准元素的位置
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high); // 获取基准元素的位置
quickSort(arr, low, pivot - 1); // 对左子数组进行递归排序
quickSort(arr, pivot + 1, high); // 对右子数组进行递归排序
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int size = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, size - 1);
std::cout << "排序后的数组:\n";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
更多的检查你们自己来看喽!!!
感谢爪子!关注爪子!点赞!收藏!