六類qsort排序方法

2021-06-27 18:31:05 字數 1272 閱讀 5042

前一段時間做題覺得qsort函式很好用,但有時不太會用比如按結構體一級排序、二級排序、字串排序等,故通過查資料將其整理一番。

以下是其具體分類及用法(若無具體說明是以降序排列):

1、對一維陣列排序:

(element_type是一位陣列中存放的資料型別,可以是char, int, float, double, etc )

int comp(const void *p1,const void *p2 )

int main()

2、對字串排序:

int comp(const void *p1,const void *p2)

int main()

s[100];

int comp(const void *p1,const void *p2)

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

4、按結構體中多個關鍵字排序(對結構體多級排序)[以二級為例]:

struct node

s[100];

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

int comp(const void *p1,const void *p2)

5、對結構體中字串進行排序:

struct node

s[100];

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

int comp(const void *p1,const void *p2)

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

6、計算幾何中求凸包的comp

//以下是俺從別人那兒抄來的,暫時還沒用過

int comp(const void *p1,const void *p2)

//重點comp函式,把除了1點外的所有的點旋轉角度排序

p.s.:qsort函式是ansi c標準中提供的,其宣告在stdlib.h檔案中,是根據二分發寫的,其時間複雜度為n*log(n),其結構為:

void qsort(void *base,size_t nelem,size_t width,int (*comp)(const void *,const void *));

其中:*base 為要排序的陣列

nelem 為要排序的陣列的長度

width 為陣列元素的大小(一字結為單位)

(* comp)(const void *p1,const void *p2) 為判斷大小函式的指標,這個函式需要自己定義,如果p1>p2,函式返回-1;a

六類佈線安裝方法

an nzs 3080 tia 或iso 的六類規範中並沒有詳細列出任何新的安裝方法。幾年前為五類佈線規定的安裝方法也適用於六類佈線。其差別在於,由於六類具有非常嚴格的效能標準,因此其對安裝質量要求更高。六類佈線中的任何安裝錯誤或捷徑,都有可能會導致測試勉強合格 不合格。與大多數負責的製造商一樣,m...

六種qsort排序方法

本文中排序都是採用的從小到大排序 一 對int型別陣列排序 int num 100 sample int cmp const void a const void b qsort num,100,sizeof num 0 cmp 二 對char型別陣列排序 同int型別 char word 100 s...

Kotlin筆記(六)類

class 類名 類頭 指定其型別引數 主 建構函式等 class person constructor firstname string 沒有類頭 class person 沒有類頭類體 class person 建構函式 class person constructor firstname st...