C++ sort函數用法 C中的qsort


需要包含#include <algorithm>
MSDN中的定義:

template<class RanIt>    
void sort(RanIt first, RanIt last); //--> 1) t
emplate<class RanIt, class Pred>    
v oid sort(RanIt first, RanIt last, Pred pr); //--> 2)

1.默認的sort函數是按升序排。對應於1)
sort(a,a+n);    //兩個參數分別為待排序數組的首地址和尾地址
2.可以自己寫一個cmp函數,按特定意圖進行排序。對應於2)
例如: int cmp( const int &a, const int &b )
{     
    if( a > b )         
        return 1;     
    else         
        return 0;
}
sort(a,a+n,cmp); 是對數組a降序排序
又如: int cmp( const POINT &a, const POINT &b )
{     
     if( a.x < b.x )         
         return 1;     
     else if( a.x == b.x )
     {             
          if( a.y < b.y )                 
               return 1;             
          else                 
               return 0;          
      }         
     else             
         return 0;
}
sort(a,a+n,cmp); 是先按x升序排序,若x值相等則按y升序排

與此類似的還有C中的qsort,以下同附上qsort的使用方法:(使用qsort()排序並用 bsearch()搜索是一個比較常用的組合,使用方便快捷)。

#include <stdlib.h>

格式 qsort(array_name,data_number,sizeof(data_type),compare_function_name)       

(void*)bsearch (pointer_to_key_word,array_name,find_number,sizeof(data_type),compare_function_name)

e.g.

 int Cmp(const void*a,const void *b)

{

       int*pa=(int*)a,*pb=(int*)b;

       if(*pa>*pb) return 1;

       else if (*pa==*pb)     return 0;

       else    return -1;

}

qsort(data,N,sizeof(int),Cmp);        // 對int型數組進行快速排序(非降序排列)

p=(int*)bsearch(&a,data,n,sizeof(int),Cmp);

 

 

以上。希望對各位有所幫助。 PS:FJNU OJ上是禁止使用qsort滴~~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM