C 中 qsort() 的比較器函式
在 C 中,我們可以獲取 qsort() 函式。這是用於使用快速排序技術來對某些陣列排序的函式。在此函式中,我們必須傳遞比較器函式。此比較器函式帶兩個引數。然後,比較它們並獲取它們之間的相對順序。這兩個引數是指標,並強制轉換為 const void*。語法如下所示 −
int comparator(const void* p1, const void* p2);
返回值有三種 −
- 小於 0。由 p1 指向的元素將位於第二個元素之前。
- 等於 0。兩個值相同。
- 大於 0。由 p1 指向的元素將位於第二個元素之後
示例
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char title[50];
int pages;
float price;
}
book;
int compareBook(book b1, book b2){
if(b1.price < b2.price){
return 0;
}
return 1;
}
main() {
int i;
book book_arr[5];
strcpy(book_arr[0].title, "C Programming");
book_arr[0].pages = 260;
book_arr[0].price = 450;
strcpy(book_arr[1].title, "DBMS Guide");
book_arr[1].pages = 850;
book_arr[1].price = 775;
strcpy(book_arr[2].title, "Learn C++");
book_arr[2].pages = 350;
book_arr[2].price = 520;
strcpy(book_arr[3].title, "Data Structures");
book_arr[3].pages = 380;
book_arr[3].price = 430;
strcpy(book_arr[4].title, "Learn Python");
book_arr[4].pages = 500;
book_arr[4].price = 300;
qsort((void*)book_arr, 5, sizeof(book_arr[0]), compareBook);
for(i = 0; i<5; i++) {
printf("%s\t\t%d\t\t%f\n",book_arr[i].title, book_arr[i].pages, book_arr[i].price);
}
}輸出
Learn Python 500 300.000000 Data Structures 380 430.000000 C Programming 260 450.000000 Learn C++ 350 520.000000 DBMS Guide 850 775.000000
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP