📅  最后修改于: 2023-12-03 14:46:51.241000             🧑  作者: Mango
QuickSort是一种经典的排序算法,也是最常用的排序算法之一。它的基本思想是选取一个基准元素,将序列中小于等于它的元素移到左边,大于它的元素移到右边,然后对左右两个子序列分别进行快速排序,直到子序列长度为1或0。
QuickSort算法的时间复杂度为O(nlogn),空间复杂度为O(logn)。
以下是一个简单的QuickSort的C++程序实现,使用递归方法实现快速排序。
#include <iostream>
using namespace std;
void partition(int arr[], int left, int right)
{
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
// 分区操作
while (i <= j)
{
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
// 递归调用
if (left < j)
partition(arr, left, j);
if (i < right)
partition(arr, i, right);
}
void quickSort(int arr[], int len)
{
partition(arr, 0, len - 1);
}
int main()
{
int arr[] = { 5,7,2,6,8,1,4,3 };
int len = sizeof(arr) / sizeof(int);
quickSort(arr, len);
for (int i = 0; i < len; i++)
cout << arr[i] << " ";
return 0;
}
partition
函数:分区操作,其中i
和j
分别初始化为序列的左侧和右侧位置,pivot
为选取的基准元素,使用while循环将小于等于基准元素的元素移到左侧,将大于基准元素的元素移到右侧,循环结束后将左右两个子序列再次进行快速排序。
quickSort
函数:快速排序函数,传入参数为数组和数组长度,调用partition
函数进行排序。
main
函数:主函数,定义一个数组并且调用quickSort
函数进行排序。
快速排序算法是一种经典且常用的排序算法,C++语言实现较为简单明了,但需要注意指针的使用和数组长度的计算。