实现快速排序算法及其原理
---
快速排序简介
快速排序(quick sort)是一种由东尼·霍尔提出的高效排序算法,其时间复杂度为O(n*log n),远优于冒泡算法等其他常见排序算法。快速排序通过选择中枢元素、分割数组和递归处理三个主要步骤来实现排序。
---
快速排序算法描述
1. 选择中枢元素:可以是第一个元素、最后一个元素或随机位置的元素。
2. 分割数组:将数组分成大于和小于中枢元素的两个子数组,并对子数组进行排列。
3. 递归处理:对上述两个子数组分别重复步骤1和2,直至整个数组有序。
---
示例演示
以未排序数组{1, 12, 5, 26, 7, 14, 3, 7, 2}为例,展示快速排序的具体过程:
1. 选取中枢元素:选择中间位置的元素作为中枢元素。
2. 分割数组:将小于中枢值的元素放在左边,大于中枢值的元素放在右边。
3. 通过递归的方式不断处理子数组,直到整个数组排序完成。
---
快速排序代码实现
下面是使用C 语言实现快速排序算法的示例代码:
```cpp
include
using namespace std;
void swap(int *x, int *y) {
int t *x;
*x *y;
*y 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[] {10, 7, 8, 9, 1, 5};
int n sizeof(arr) / sizeof(int);
quicksort(arr, 0, n - 1);
cout << "Sorted array: ";
for (int i 0; i < n; i ) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
以上代码演示了如何使用快速排序算法对数组进行排序,并输出排序后的结果。
---
通过本文的介绍,读者可以更加深入地了解快速排序算法的原理和实现方法,从而在实际应用中更好地运用这一高效的排序算法。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。