//
// Created by Zyk on 2023/10/2.
//
#ifndef ALGORITHM_QUICKSORT_H
#define ALGORITHM_QUICKSORT_H
#include <vector>
using namespace std;
namespace SortAlgorithm
{
/**
* 快速排序:基于分治思想的排序算法,不稳定,平均时间复杂度o(nlogn)
* */
int partition(vector<int> &vec, int left, int right)
{
// 以vec[right]为标记,将vec分成两部分,左半部分元素小于vec[right]
int flag = left - 1;
for (int i = left; i < right; ++i)
{
if (vec[i] < vec[right]) swap(vec[++flag], vec[i]);
}
swap(vec[++flag], vec[right]);
return flag;
}
void quicksort(vector<int> &vec, int left, int right)
{
// left和right表示数组起始元素和末尾元素位置
if (left < right)
{
int mid = partition(vec, left, right);
quicksort(vec, left, mid - 1);
quicksort(vec, mid + 1, right);
}
}
}
#endif //ALGORITHM_QUICKSORT_H
C++ 实现快速排序
最新推荐文章于 2024-07-24 14:05:37 发布