递归实现:
#include <stdio.h>
int arr[10] = {3, 2, 4, 1, 9, 7, 5, 6, 0, 8};
void print_array()
{
int i = 0;
for (i = 0; i < 10; i++)
printf("arr[%d]:%d ", i, arr[i]);
printf("\n");
}
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
void quick_sort(int left, int right)
{
if (left >= right)
return;
int i = left;
int j = right;
while (i < j) {
while (arr[j] >= arr[left] && j > i) {
j--;
}
while (arr[i] <= arr[left] && i < j) {
i++;
}
if (i != j) {
swap(&arr[i], &arr[j]);
print_array();
}
}
swap(&arr[left], &arr[i]);
print_array();
quick_sort(left, i-1);
quick_sort(i+1, right);
}
int main(int argc, char **argv)
{
int left = 0;
int right = 9;
print_array();
quick_sort(left, right);
print_array();
}
非递归实现: