写一个数组为a[10]={7,8,9,10,1,2,3,4,5,6};的快速排序cpp
时间: 2023-10-01 10:02:09 浏览: 84
下面是使用 C++ 实现的快速排序算法,针对数组 a[10]={7,8,9,10,1,2,3,4,5,6} 进行排序:
```
#include <iostream>
using namespace std;
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
// partition
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--;
}
};
// recursion
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main() {
int a[10]={7,8,9,10,1,2,3,4,5,6};
quickSort(a, 0, 9);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
```
解释一下上述代码的实现:
1. 首先定义一个快速排序函数 quickSort,它接收三个参数:数组 arr,左边界 left,右边界 right。
2. 在函数中,我们定义了三个变量 i,j,tmp,其中 i 和 j 分别指向数组的左右两端,tmp 是用来交换数组元素的临时变量。
3. 定义一个 pivot 变量,它是我们选择的中间值,用于比较和交换数组元素。
4. 在 while 循环中,我们使用两个 while 循环来移动 i 和 j 指针,找到需要交换的元素。
5. 如果 i 指针小于等于 j 指针,说明我们找到了需要交换的元素,然后交换它们。
6. 最后,我们递归调用 quickSort 函数,将左半部分和右半部分分别进行快速排序。
7. 在 main 函数中,我们定义了一个数组 a,然后调用 quickSort 函数对它进行排序。
8. 最后,我们使用 for 循环打印排序后的数组元素。
阅读全文