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

以上是 C语言中qsort()的比较器函数 的全部内容, 来源链接: utcz.com/z/348947.html

回到顶部