码迷,mamicode.com
首页 > 其他好文 > 详细

最易理解的qsort排序算法

时间:2014-08-19 10:46:44      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   ar   art   

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

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

没有注释,也懂吗?

 

最易理解的qsort排序算法,布布扣,bubuko.com

最易理解的qsort排序算法

标签:style   blog   color   os   io   for   ar   art   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!