#include<iostream>
void Quicksort(int* arr, int left_, int right_) {
int left = left_;
int right = right_;
int temp = 0;
if (left < right) {
temp = arr[left];//选第一个元素作为基准
while (left != right)
{
while (right>left && arr[right]>=temp)
{
right--;
}
arr[left] = arr[right];
while (left<right && arr[left]<=temp)
{
left++;
}
arr[right] = arr[left];
}
arr[left] = temp;
//递归调用,对左右子序列排序
Quicksort(arr, left_, left - 1);
Quicksort(arr, right+1, right_);
}
}
int main() {
int arr[] = {6,8,2,4,9,1,5,3,7,0};
int length = sizeof(arr) / sizeof(arr[0]);//求数组长度
std::cout << "排序前:" << std::endl;
for (int i = 0;i < length;i++) {
std::cout << arr[i]<<",";
}
std::cout << std::endl;
Quicksort(arr, 0, length - 1);
std::cout << "排序后:" << std::endl;
for (int i = 0;i < length;i++) {
std::cout << arr[i] << ",";
}
std::cout << std::endl;
return 0;
}
快速排序(Quicksort的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。