最易理解的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();
}

没有注释,也懂吗?

 

posted on 2014-08-19 10:04  深蓝无忌  阅读(316)  评论(0编辑  收藏  举报

导航