最易理解的qsort排序算法

快速排序算法程序可以写得千奇百怪,但最易理解的个人认为仍是下面的:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

void swap(int *a ,int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

int partition(int array[],int l,int r)
{
    int pivot = array[r];
    int curpos = l;
    int j ;

    for( j = l;j<r;j++)
    {
        if(array[j] < pivot)
        {
            swap(&array[j],&array[curpos]);
            curpos++;
        }
    }

    swap(&array[r],&array[curpos]);
    return curpos;
    
}

void quicksort(int array[],int l,int r)
{
    int interval;    
    if(l < r)
    {
        interval = partition(array,l,r);
        quicksort(array,l,interval-1);
        quicksort(array,interval+1,r);
        
    }
        
}


int test_quicksort()
{
    int number = 10000000;
    printf("hehe:%d
",number);
    int *array = (int*) malloc(number*sizeof(int));
    if (array == NULL)
    {
        printf("malloc failed
");
        return -1;
    }
    int i;

    printf("----------------------------------------before quick sort--------------
");
    srand(time(NULL));
    for(i = 0;i<number;i++)
    {
        array[i] = rand()%100000000;
        //printf("	array[%d] = %d
",i,array[i]);
    }

    printf("----------------------------------------after quick sort-----------------
");
    
    quicksort(array,0,number-1);
    for(i = 0;i<number;i++)
    {
        //printf("	array[%d] = %d
",i,array[i]);
    }
    printf("ok
");
    return 0;
}
int main()
{
    test_quicksort();
}

没有注释,也懂吗?

/***********************************************

看书看原版,原汁原味。

不会英文?没关系,硬着头皮看下去慢慢熟练,才会有真正收获。

没有原书,也要网上找PDF来看。

网上的原版资料多了去了,下载东西也到原始下载点去看看。

你会知其所以然,呵呵。

***********************************************/

原文地址:https://www.cnblogs.com/dpblue/p/3921379.html