array sort - 2 : quick sort

递归实现:

#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();
}

非递归实现:

 

posted @ 2017-04-12 13:42  roadmap  阅读(120)  评论(0)    收藏  举报