快速排序

2010 年 4 月 9 日7190

本站主要内容均为原创,转帖需注明出处www.alexclouds.net

       博主记得大学那会儿学了数据结构,当然是C版本的,其实排序算法学了很多,也从课外知识学了其他排序算法,再复习一下这个快速排序吧:

 

kspx

 

        学计算机的别和我说你看懂这些代码,那真的完蛋了。

C代码实现

static int partition(int * const p,int start,int end){ 
    /**
      i的起始值为start-1
      j的起始值为start
    */ 
    int i = start -1,j=start; 
    int cmpkey = *(p + end); 
    int swap = 0; 
    while(j < end){ 
        if(*(p + j) < cmpkey){ 
            i++; 
            swap = *(p + i); 
            *(p + i) = *(p + j); 
            *(p + j) = swap; 
        } 
        j++; 
    } 
    swap = *(p + i +1); 
    *(p + i +1) = *(p + end); 
    *(p + end) = swap; 
    return i+1; 

 
void quick_sort(int * const p,int start,int end){ 
    if( start < end ){ 
        int q = partition(p,start,end); 
        quick_sort(p,start,q - 1); 
        quick_sort(p,q +1 ,end); 
    }     

0 0