用快速排序法给数组排序
时间: 2024-04-07 21:08:24 浏览: 93
使用快速排序法对一维数组进行排序
好的,下面是快速排序法的示例代码(使用 C++ 实现):
```cpp
#include <iostream>
using namespace std;
// 交换数组中两个元素的值
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
// 根据基准元素将数组分成两部分
int partition(int arr[], int low, int high)
{
int pivot = arr[high]; // 选择最后一个元素作为基准元素
int i = low - 1; // i 表示小于基准元素的部分的最后一个元素的下标
for (int j = low; j <= high - 1; j++)
{
// 如果当前元素小于等于基准元素,则将其放到小于基准元素的部分中
if (arr[j] <= pivot)
{
i++;
swap(&arr[i], &arr[j]);
}
}
// 将基准元素放到正确的位置上
swap(&arr[i+1], &arr[high]);
return i+1;
}
// 快速排序函数
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
// 根据基准元素将数组分成两部分
int pi = partition(arr, low, high);
// 对两部分分别进行快速排序
quickSort(arr, low, pi-1);
quickSort(arr, pi+1, high);
}
}
// 测试
int main()
{
int arr[] = {10, 7, 8, 9, 1, 5};
int size = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, size-1);
cout << "排序后的数组为:" << endl;
for (int i = 0; i < size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
上述代码中,`quickSort` 函数用于进行快速排序,`partition` 函数用于将数组分成两部分,`swap` 函数用于交换数组中的两个元素。
快速排序的时间复杂度为 $O(n\log n)$,是一种高效的排序算法。
阅读全文