c++ qsort函數應用


C++ qsort在"iostream" c在頭文件stdlib.h中,strcmp在string.h中。下列例子默認從小到大排序即(a>b返回>0),反之從小到大排序

1、對int類型數組排序

int num[100]; 
int cmp ( const void *a , const void *b ) 
{ 
    return *(int *)a - *(int *)b; 
} 
qsort(num,100,sizeof(num[0]),cmp); 

2、對char類型數組排序(同int類型)

char strs[100]; 
int cmp( const void *a , const void *b ) 
{ 
    return *(char *)a - *(int *)b; 
} 
qsort(strs,100,sizeof(strs[0]),cmp); 

3、對double類型數組排序(特別要注意)

double dbs[100]; 
int cmp( const void *a , const void *b ) 
{ 
    return *(double *)a > *(double *)b ? 1 : -1; 
} 
qsort(dbs,100,sizeof(dbs[0]),cmp); 

4、對結構體一級排序

struct d
{ 
    int a;
}arr[100] 
int cmp( const void *a ,const void *b) 
{ 
  return (*(d *)a)->a > (*(d *)b)->b ? 1 : -1; 
} 
qsort(arr,100,sizeof(arr[0]),cmp); 

5、對結構體二級排序

struct d 
{ 
    int x; 
    int y; 
}arr[100]; 
//按照x從小到大排序,當x相等時按照y從大到小排序 
int cmp( const void *a , const void *b ) 
{ 
    struct d *c = (d *)a;
    struct d *e = (d *)b; 
    return c->x != e->x?c->x - e->x:return e->y - c->y; 
} 
qsort(d,100,sizeof(d[0]),cmp); 

6、對字符串進行排序

struct dict{
char str[100]; 
}dicts[100]
int cmp ( const void *a , const void *b ) 
{ 
  return strcmp( (*(dict *)a)->str , (*(dict *)b)->str ); 
} 
qsort(dicts,100,sizeof(dicts[0]),cmp); 


免責聲明!

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



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