#include "iostream"
using namespace std;
class sort{
public:
int Qsort(int* temp , int low , int high);
void Swap(int& a, int& b);
void show(int* finish);
void sort_all(int* temp, int low, int high);
};
void sort::Swap(int& a, int& b){ //交换
int change = a;
a = b;
b = change;
}
int sort::Qsort(int* temp, int low, int high){ //快速排序根据中轴交换
int pivotkey = temp[low];
while (low != high){
while (temp[high] > pivotkey && low != high){
high--;
}
Swap(temp[high], temp[low]);
while (temp[low] < pivotkey && low != high){
low++;
}
Swap(temp[high], temp[low]);
}
return low;
}
void sort::sort_all(int* temp, int low, int high){ //快速排序递归
if (low < high){
int privotloc = Qsort(temp, low, high);
sort_all(temp , low , privotloc - 1);
sort_all(temp , privotloc + 1 , high);
}
}
void sort::show(int* finish){
for (int i = 0; i < 10; i++){
cout << finish[i];
}
cout << endl;
}
int main(){
sort S;
S.sort_all(TEMP, 0, 9);
S.show(TEMP);
system("pause");
}
快速排序的递归算法
最新推荐文章于 2023-09-14 20:49:02 发布