C語言stdlib頭文件(stdlib.h)中qsort函數的用法及代碼示例。
用法:
void qsort (void* base, size_t num, size_t size,
int (*compar)(const void*,const void*));
對數組的元素進行排序
此函數使用的排序算法通過調用指定的元素來比較成對的元素compar函數以指向它們的指針作為參數。
該函數不返回任何值,但會修改由指向的數組的內容base按照定義重新排序其元素compar。
等效元素的順序是不確定的。
參數
- base
- 指向要排序的數組的第一個對象的指針,將其轉換為
void*
。 - num
- 指向的數組中的元素數base。
size_t是無符號整數類型。 - size
- 數組中每個元素的大小(以字節為單位)。
size_t是無符號整數類型。 - compar
- 指向比較兩個元素的函數的指針。
該函數被重複調用qsort比較兩個元素。它應遵循以下原型:
int compar (const void* p1, const void* p2);
以兩個指針作為參數(都轉換為const void*)。該函數通過返回(以穩定且可傳遞的方式)定義元素的順序:
返回值 意義 <0
指向的元素p1在由指向的元素之前p2 0
指向的元素p1等效於所指向的元素p2 >0
指向的元素p1跟隨由指向的元素p2
對於可以使用常規關係運算符進行比較的類型,一般compar函數可能看起來像:
1
2
3
4
5
6int compareMyType (const void * a, const void * b) { if ( *(MyType*)a < *(MyType*)b ) return -1; if ( *(MyType*)a == *(MyType*)b ) return 0; if ( *(MyType*)a > *(MyType*)b ) return 1; }
返回值
空示例
/* qsort example */
#include <stdio.h> /* printf */
#include <stdlib.h> /* qsort */
int values[] = { 40, 10, 100, 90, 20, 25 };
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main ()
{
int n;
qsort (values, 6, sizeof(int), compare);
for (n=0; n<6; n++)
printf ("%d ",values[n]);
return 0;
}
輸出:
10 20 25 40 90 100 |
相關用法
- C語言 atof用法及代碼示例
- C語言 atoi用法及代碼示例
- C語言 atol用法及代碼示例
- C語言 atoll用法及代碼示例
- C語言 strtod用法及代碼示例
- C語言 strtof用法及代碼示例
- C語言 strtol用法及代碼示例
- C語言 strtold用法及代碼示例
- C語言 strtoll用法及代碼示例
- C語言 strtoul用法及代碼示例
- C語言 strtoull用法及代碼示例
- C語言 rand用法及代碼示例
- C語言 srand用法及代碼示例
- C語言 calloc用法及代碼示例
- C語言 free用法及代碼示例
- C語言 malloc用法及代碼示例
- C語言 realloc用法及代碼示例
- C語言 abort用法及代碼示例
- C語言 atexit用法及代碼示例
- C語言 at_quick_exit用法及代碼示例
- C語言 exit用法及代碼示例
- C語言 getenv用法及代碼示例
- C語言 quick_exit用法及代碼示例
- C語言 system用法及代碼示例
- C語言 _Exit用法及代碼示例
- C語言 bsearch用法及代碼示例
- C語言 abs用法及代碼示例
- C語言 div用法及代碼示例
- C語言 labs用法及代碼示例
- C語言 ldiv用法及代碼示例
- C語言 llabs用法及代碼示例
- C語言 lldiv用法及代碼示例
- C語言 mblen用法及代碼示例
- C語言 mbtowc用法及代碼示例
- C語言 wctomb用法及代碼示例
- C語言 wcstombs用法及代碼示例
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C qsort function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。