快速排序算法

快速排序算法的平均时间复杂度为O(nlogn),实现代码如下:

#include <stdio.h>

#include <stdlib.h>



int division(int a[], int left, int right)

{

    int i = left, j = right, base = a[left], t;



    while (i < j){

        while (i < j && a[j] >= base) --j;

        while (i < j && a[i] <= base) ++i;



        if (i != j){

            t = a[i];

            a[i] = a[j];

            a[j] = t;

        }

    }



    a[left] = a[i];

    a[i] = base;



    return i;

}



void quick_sort(int a[], int left, int right)

{

    int div;



    if (left < right){// use if statement not while !!!

        div = division(a, left, right);

        quick_sort(a, left, div-1);

        quick_sort(a, div+1, right);

    }

}



int main(void)

{



    int a[100], size = 0, i;



    while (scanf("%d", &a[size]) != EOF){

        ++size;

    }



    printf("size : %d\n", size);



    quick_sort(a, 0, size-1);



    for (i = 0; i < size; i++)

    {

        printf("%6d\n", a[i]);

    }



    return 0;

}

 

你可能感兴趣的:(快速排序)