總結一下qsort 函式的使用與注意

2021-09-06 02:24:00 字數 1705 閱讀 5750

一、簡介

原 型:void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));

功 能:使用快速排序例程進行排序

參 數:1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指標,用於確定排序的順序

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

qsort要求提供的函式是需要自己定義的乙個比較函式,比較函式使得qsort通用性更好。有了比較函式qsort可以實現對陣列、字串、結構體等結構進行公升序或降序排序。

如int cmp(const void *a, const void *b)中有兩個元素作為引數,返回乙個int值,如果比較函式返回大於0,qsort就認為a > b,返回小於0qsort就認為a <

b。qsort知道元素的大小了,就可以把大的放前面去。如果你的比較函式返回本來應該是1的(即a > b),而卻返回-1(小於0的數),那麼qsort認為a < b,就把b放在前面去,但實際上是a > b的,所以就造成了降序排序的差別了。

簡單來說,比較函式的作用就是給qsort指明元素的大小事怎麼比較的。

二、使用舉例(mingw5測試通過)

1、對一維陣列排序:

2、對字串排序:

#include #include typedef char element_type;

element_type list = "djfkwjefklwefagj";

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

int main(void)

3、按結構體中某個關鍵字排序(對結構體一級排序):

#include #include struct node

s[100];

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

int main(void)

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)

總結一下《vue的使用》

1.用vue建立專案的時候,1.安裝axios,對axios進行處理,建立axios.js檔案,設定基礎請求位址,設定前置守衛和獨享守衛,對請求資料進行設定,特別實在進行token驗證的時候特別需要設定 2.後台伺服器如果跨域,需要在根目錄建立vue.config.js具體參考vue官網的介紹 3....

總結一下android shape的使用詳解

shape使用 漸變色 分割線 邊框 半透明 半透明陰影效果 下面是shape中各個屬性代表的含義 shape xmlns android android shape rectangle oval line ring 預設為rectangle corners shape rectangle 時使用,...

qsort 函式的使用

該函式是我在看x264 中關於參考幀列表的排序接觸到的,總結於此,以作備忘。功 能 使用快速排序例程進行排序 原 型 void qsort void base,int nelem,int width,int fcmp const void const void 2.陣列中待排序元素數量 3.各元素的...