三.模擬實現
routine
required header
compatibility
qsortandansi, win 95, win nt
用法:
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );四個引數:
1.void*base: 待排序陣列的位址,即陣列名
2.size_t num: 陣列待排序元素的個數
3.size_t width: 各元素所佔位元組數
4.int (__cdecl *compare )(const void *elem1, const void *elem2): 自定義的函式指標,用於確定排序的順序(需要使用者自定義乙個比較函式),預設排序方式為公升序
返回值:
return value
description
< 0
elem1 less than elem2
=0elem1 equivalent to elem2
>0
elem1 greater than elem2
一道簡單排序題,這裡用qsort函式實現
#include
#include
intcmp
(const
void
* p1,
const
void
* p2)
//形參格式不能改
intmain()
qsort
(a, n,
sizeof
(a[0])
, cmp)
;for
(i =
0; i <
5; i++
)}
字母異位詞
#include
#include
#include
intcmp
(const
void
* p1,
const
void
* p2)
bool b
(char
* s,
char
* t)
qsort
(s, ls,
sizeof
(s[0])
, cmp)
;qsort
(t, lt,
sizeof
(t[0])
, cmp);if
(strcmp
(s, t)==0
)}intmain()
else
}
同int陣列型別類似,型別轉換時轉換成char*即可
#include
#include
intcmp
(const
void
* p1,
const
void
* p2)
intmain()
在對浮點或者double型的一定要用三目運算子,因為要是使用像整型那樣相減的話,如果是兩個很接近的數則可能返回乙個很小的小數(大於-1,小於1),而cmp的返回值是int型,因此會將這個小數返回0,系統認為是相等,失去了本來存在的大小關係
#include
struct stu
;int
cmp_by_age
(const
void
* e1,
const
void
* e2)
void
test2()
,,};
int sz =
sizeof
(arr)
/sizeof
(arr[0]
);qsort
(arr, sz,
sizeof
(arr[0]
), cmp_by_age);}
intmain()
#include
#include
intcmp
(const
void
* e1,
const
void
* e2)
void
_swap
(char
* buf1,
char
* buf2,
int width)
}void
bubble_sort
(void
* base, size_t sz, size_t width,
int(
*cmp)
(const
void
*e1,
const
void
*e2))}
}}intmain()
;int sz =
sizeof
(arr)
/sizeof
(arr[0]
);my_qsort
(arr, sz,
sizeof
(arr[0]
), cmp)
;}
c語言qsort的使用
基於快速排序對陣列進行排序,陣列元素可以是結構體。qsort屬於內建函式,需要包含標頭檔案 stdlib.h void qsort void ptr,size t count,size t size,int comp const void const void void ptr 空指標,指向需要排序...
qsort使用練習
第一次嘗試 include include include define max 10 define max c 4 void cmp int const void a,const void b 上面為規範寫法,下面是我理解覺得可以通過編譯的 整型 intcmp int int a,int b 浮點...
C語言qsort函式的使用
qsort函式必須是對於連續的記憶體的資料進行排序,不能對鍊錶進行排序 定義 qsort 基本快速排序的方法,每次把陣列分成兩部分和中間的乙個劃分值,而對於有多個重複值的陣列來說,基本快速排序的效率較低,且不穩定 整合在c語言庫函式裡面的qsort函式,使用三路劃分的方法解決排序這個問題。所謂三路劃...