#include <iostream>
using namespace std;
void quickSort(int *arr, int left, int right);
int portSort1(int *arr, int left, int right);
int portSort2(int *arr, int left, int right);
int main()
{
int array[] = {4,1,7,6,9,2,8,0,3,5};
int len = sizeof(array) / sizeof(array[0]);
quickSort(array, 0, len - 1);
for(int i = 0; i < len; i++) {
cout << array[i] << " " << endl;
}
cout << "Hello World";
return 0;
}
void quickSort(int *arr, int left, int right) {
if (left >= right) return;
int index = portSort2(arr, left, right);
quickSort(arr, left, index);
quickSort(arr, index+1, right);
return;
}
int portSort1(int *arr, int left, int right) {
int key = arr[left];
while(left < right) {
while (left < right && key <= arr[right])
right--;
arr[left] = arr[right];
while (left < right && key >= arr[left])
left++;
arr[right] = arr[left];
}
arr[left] = key;
return left;
}
int portSort2(int *arr, int left, int right) {
int& key = arr[left];
while(left < right) {
while (left < right && key <= arr[right])
right--;
while (left < right && key >= arr[left])
left++;
swap (arr[left], arr[right]);
}
swap (arr[left], key);
return left;
}
快速排序C++实现
于 2022-02-21 00:06:13 首次发布