首页 > 代码库 > 最易理解的qsort排序算法

最易理解的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\n",number);    int *array = (int*) malloc(number*sizeof(int));    if (array == NULL)    {        printf("malloc failed\n");        return -1;    }    int i;    printf("----------------------------------------before quick sort--------------\n");    srand(time(NULL));    for(i = 0;i<number;i++)    {        array[i] = rand()%100000000;        //printf("\tarray[%d] = %d\n",i,array[i]);    }    printf("----------------------------------------after quick sort-----------------\n");        quicksort(array,0,number-1);    for(i = 0;i<number;i++)    {        //printf("\tarray[%d] = %d\n",i,array[i]);    }    printf("ok\n");    return 0;}int main(){    test_quicksort();}

没有注释,也懂吗?