zoukankan      html  css  js  c++  java
  • 最易理解的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来看。

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

    你会知其所以然,呵呵。

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

  • 相关阅读:
    CF351E Jeff and Permutation
    2018-8-10-win10-uwp-绑定-OneWay-无法使用
    2018-8-10-win10-uwp-绑定-OneWay-无法使用
    2018-2-13-C#-通配符转正则
    2018-2-13-C#-通配符转正则
    2019-9-2-win10-uwp-列表模板选择器
    2019-9-2-win10-uwp-列表模板选择器
    2018-2-13-win10-uwp-InkCanvas控件数据绑定
    2018-2-13-win10-uwp-InkCanvas控件数据绑定
    2018-2-13-win10-uwp-unix-timestamp-时间戳-转-DateTime
  • 原文地址:https://www.cnblogs.com/dpblue/p/3921379.html
Copyright © 2011-2022 走看看