用c语言写快速排序,要求打印出每次排序后的数据
时间: 2023-07-08 09:56:06 浏览: 90
用C语言实现快速排序
好的,以下是使用 C 语言实现快速排序并打印每次排序结果的代码。在代码中,我将快速排序算法封装成了一个函数 `quick_sort`,并在函数中使用了递归方式进行排序。
```c
#include <stdio.h>
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;
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 quick_sort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
printf("After sorting: ");
for (int i = low; i <= high; i++)
printf("%d ", arr[i]);
printf("\n");
quick_sort(arr, low, pi - 1);
quick_sort(arr, pi + 1, high);
}
}
int main()
{
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
在上述代码中,我们使用 `partition` 函数来将数组分成两个部分,并返回分割点的位置。然后使用递归方式对分割点左右两部分进行排序,最终得到排序后的结果。每次排序后,我们都会打印出当前数组的排序结果。
希望这份代码能够对您有所帮助。
阅读全文