c 中qsort函式簡介

2021-06-01 02:15:42 字數 1590 閱讀 1835

c語言中排序的演算法有很多種,系統也提供了乙個函式qsort()可以實現快速排序。原型如下:

void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));

它根據comp所指向的函式所提供的順序對base所指向的陣列進行排序,nmem為參加排序的元素個數,size為每個元素所佔的位元組數。例如要對元素進行公升序排列,則定義comp所指向的函式為:如果其第乙個引數比第二個引數小,則返回乙個小於0的值,反之則返回乙個大於0的值,如果相等,則返回0。

七種qsort排序方法

《本文中排序都是採用的從小到大排序》

一、對int型別陣列排序

c/c++

code

int num[100];

sample:

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

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

二、對char型別陣列排序(同int型別)

c/c++

code

char word[100];

sample:

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

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

三、對double型別陣列排序(特別要注意)

c/c++ code

double in[100];

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

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

四、對結構體一級排序

c/c++ code

struct in

s[100]

//按照data的值從小到大將結構體排序,關於結構體內的排序關鍵資料data的型別可以很多種,參考上面的例子寫

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

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

五、對結構體二級排序

c/c++ code

struct in

s[100];

//按照x從小到大排序,當x相等時按照y從大到小排序

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

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

六、對字串進行排序

c/c++ code

struct in

s[100];

//按照結構體中字串str的字典順序排序

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

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

七、計算幾何中求凸包的cmp

c/c++ code

int cmp(const void *a,const void *b) //重點cmp函式,把除了1點外的所有點,旋轉角度排序

C 中sort與qsort函式簡介

c 中自帶了一些排序函式,其中stl的sort qsort 用的較多 sort 複雜度為n log2 n 標頭檔案 include 原型 template classrandomaccessiterator voidsort randomaccessiterator first,randomacce...

C中的qsort函式

c中的qsort函式 一 簡介 原 型 void qsort void base,int nelem,int width,int fcmp const void const void 功 能 使用快速排序例程進行排序 說明 qsort函式是ansi c標準中提供的,其宣告在stdlib.h檔案中,是...

STL 中 qsort 函式七種用法簡介

七種 qsort 排序方法 本文中排序都是採用的從小到大排序 一 對 int 型別陣列排序 int num 100 sample int cmp const void a const void b return int a int b qsort num,100,sizeof num 0 cmp 二...