C言語におけるqsort関数の使用例のまとめ

2014 ワード

この例では,C言語におけるqsort関数の一般的な使い方をまとめ,非常に実用的である.皆さんの参考にしてください.具体的な分析は以下の通りである.
C言語のqsort関数はヘッダファイルに含まれており,本稿ではソートは小さいものから大きいものまで用いられる.
一、intタイプ配列の並べ替え

int num[100]; 

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


二、charタイプ配列の並べ替え(intタイプと同じ)

char word[100]; 
int cmp( const void *a , const void *b ) 
{ 
  return *(char *)a - *(char *)b; 
} 

qsort(word,100,sizeof(word[0]),cmp); 


三、doubleタイプ配列のソート(特に注意)

double in[100]; 

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


四、構造体の一級並べ替え

struct In 
{ 
  double data; 
   int other; 
}s[100];

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


五、構造体の二次並べ替え

struct In 
{ 
  int x; 
  int y; 
}s[100]; 

//  x      , x     y       
int cmp( const void *a , const void *b ) 
{ 
  struct In *c = (struct In *)a; 
  struct In *d = (struct In *)b; 
  if(c->x != d->x) return c->x - d->x; 
  else return d->y - c->y; 
} 
qsort(s,100,sizeof(s[0]),cmp); 


六、文字列を並べ替える

struct In 
{ 
  int data; 
  char str[100]; 
}s[100]; 

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


本文の述べた実例は皆さんのCプログラム設計の学習に対して一定の参考価値があると信じています.