#include <iostream>
// 全局数组(方便监控内存)
int g_array[10] = {6, 1, 2, 7, 9, 10, 4, 5, 10, 8};
void QuickSort(int target_array[], int left, int right){
int i = left; // 左边起始索引
int j = right; // 右边其实索引
int base = target_array[left]; // 中轴值
if (left > right)
{
return;
}
while(i != j){
// 从右边开始,寻找小于中轴值的索引
while(target_array[j] >= base && i < j){
j--;
}
// 接着,从左边开始,寻找大于中轴值的索引
while(target_array[i] <= base && i < j ){
i++;
}
// 交换
if (i < j)
{
int temp = target_array[i];
target_array[i] = target_array[j];
target_array[j] = temp;
}
}
// 将中轴数归位
target_array[left] = target_array[i];
target_array[i] = base;
// 递归
QuickSort(target_array, left, i-1);
QuickSort(target_array, i+1, right);
}
void main(){
QuickSort(g_array, 0, 9);
for (int i = 0; i< sizeof(g_array) /sizeof(g_array[0]); i++)
{
std::cout << g_array[i] << " ";
}
std::cout << std::endl;
}
浅析“快速排序”算法
最新推荐文章于 2021-06-07 23:49:35 发布