快速排序算法c(快速排序算法C++代码)

快速排序算法是一种高效的排序算法,它采用了分治的策略来排序一个无序的数组。本文将详细介绍快速排序算法的思想、步骤以及C语言实现。

## 简介

快速排序算法是由英国计算机科学家Tony Hoare在1959年提出的一种排序算法。它是一种基于比较的排序算法,具有平均时间复杂度为O(nlogn) 的特点,是目前最常用的排序算法之一。快速排序算法通过将数组分成两个子数组,然后对这两个子数组进行递归排序来实现对整个数组的排序。

## 步骤

快速排序算法的基本步骤如下:

1. 选择一个元素作为基准pivot。

2. 将小于基准的元素放在左边,大于基准的元素放在右边,相等的元素可以放在任意一边。

3. 对左右两边的子数组分别进行递归调用。

## C语言实现

下面是快速排序算法的C语言实现:

```c

void swap(int* a, int* b) {

int t = *a;

*a = *b;

*b = t;

int partition(int arr[], int low, int high) {

int pivot = arr[high]; // 选择最后一个元素作为基准

int i = (low - 1); // 定义小于基准的元素的索引

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[] = {64, 25, 12, 22, 11};

int n = sizeof(arr) / sizeof(arr[0]);

quickSort(arr, 0, n - 1);

printf("Sorted array: \n");

for (int i = 0; i < n; i++)

printf("%d ", arr[i]);

return 0;

```

上述代码中,`partition`函数用于找到基准元素的正确位置,并将小于基准的元素放在其左边,大于基准的元素放在右边。`quickSort`函数用于对子数组进行递归调用,直到排序完成。

## 总结

快速排序算法是一种高效的排序算法,具有平均时间复杂度为O(nlogn) 的特点。它通过选择基准元素,将数组分成两个子数组,然后递归对子数组进行排序,最终实现对整个数组的排序。通过C语言的实现,我们可以更好地理解快速排序算法的思想和应用。

标签列表