将11,15,9,14,3,5快速排序每步步骤
时间: 2024-05-17 14:19:11 浏览: 16
首先,选取第一个元素11作为基准元素,左右指针分别指向序列的两端:
11,15,9,14,3,5
i j
然后,从右往左扫描,找到第一个比基准元素小的元素,将其与左指针所指向的位置交换:
11,5,9,14,3,15
i j
接下来,从左往右扫描,找到第一个比基准元素大的元素,将其与右指针所指向的位置交换:
11,5,9,3,14,15
i j
继续从右往左扫描,找到第一个比基准元素小的元素,将其与左指针所指向的位置交换:
11,3,9,5,14,15
i j
从左往右扫描,找到第一个比基准元素大的元素,将其与右指针所指向的位置交换:
11,3,9,5,14,15
i,j
左右指针相遇,将基准元素放到中间位置,左边的元素都比基准元素小,右边的元素都比基准元素大:
5,3,9,11,14,15
i,j
然后,递归地对左右两个子序列进行排序,直到所有元素都排好序。
整个排序过程的步骤如上。
相关问题
将23,5,67,2,14,21,10,8,100,35快速排序每步
首先,选取第一个元素23作为基准元素,左右指针分别指向序列的两端:
23,5,67,2,14,21,10,8,100,35
i j
然后,从右往左扫描,找到第一个比基准元素小的元素,将其与左指针所指向的位置交换:
23,5,35,2,14,21,10,8,100,67
i j
接下来,从左往右扫描,找到第一个比基准元素大的元素,将其与右指针所指向的位置交换:
23,5,35,2,14,21,10,8,67,100
i j
继续从右往左扫描,找到第一个比基准元素小的元素,将其与左指针所指向的位置交换:
23,5,8,2,14,21,10,35,67,100
i j
从左往右扫描,找到第一个比基准元素大的元素,将其与右指针所指向的位置交换:
23,5,8,2,14,21,10,35,67,100
i j
继续从右往左扫描,找到第一个比基准元素小的元素,将其与左指针所指向的位置交换:
10,5,8,2,14,21,23,35,67,100
i j
从左往右扫描,找到第一个比基准元素大的元素,将其与右指针所指向的位置交换:
10,5,8,2,14,21,23,35,67,100
i j
继续从右往左扫描,找到第一个比基准元素小的元素,将其与左指针所指向的位置交换:
2,5,8,10,14,21,23,35,67,100
i j
此时,左右指针相遇,将基准元素放到中间位置,左边的元素都比基准元素小,右边的元素都比基准元素大:
2,5,8,10,14,21,23,35,67,100
i,j
然后,递归地对左右两个子序列进行排序,直到所有元素都排好序。
整个排序过程的步骤如上。
C语言快速排序算法输出每一次步骤
快速排序是一种高效的排序算法,其基本思想是分治法。快速排序的核心是选定一个基准元素,将待排序数组分成两个部分,左边部分的元素都小于基准元素,右边部分的元素都大于等于基准元素,然后对左右两部分分别进行递归排序,最终得到完整的有序数组。
下面是一个输出每一次步骤的快速排序算法C语言代码:
```c
#include <stdio.h>
// 快速排序函数
void quick_sort(int arr[], int left, int right) {
if(left >= right) {
return;
}
int i = left, j = right, base = arr[left]; //以左边第一个数为基准
while(i < j) {
while(i < j && arr[j] >= base) {
j--;
}
if(i < j) {
arr[i++] = arr[j];
}
while(i < j && arr[i] < base) {
i++;
}
if(i < j) {
arr[j--] = arr[i];
}
}
arr[i] = base;
printf("第%d步排序结果:", i - left + 1); // 输出每一次步骤
for(int k = left; k <= right; k++) {
printf("%d ", arr[k]);
}
printf("\n");
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
printf("排序后结果:");
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们在快速排序函数中加入了输出每一次步骤的语句,用于输出每一次基准元素排序后的结果。在`main`函数中,我们定义了一个整型数组`arr`、数组长度`n`,然后调用`quick_sort`函数进行排序,最后输出排序结果。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)