c语言库函数编写快速排序



库函数qsort()的原型如下: 

#include <stdlib.h> 

void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );

功能:buf指向的数据(包含num,每项的大小为size)进行快速排序。如果函数compare的第一个参数小于第二个参数,返回负值;如果等于返回零值;如果大于返回正值。函数对buf指向的数据按升序排序。

可以自己编写compare函数,而默认的函数compare返回为正值,所以函数对buf指向的数据按升序排序。

在这里的比较函数compare可以随便起自己喜欢的名字 int compare(const void *,const void *);返回类型必须是int

#include <stdio.h>
#include <stdlib.h>
//快速排序算法利用c库函数
int compUp(const void *a, const void *b)
{
 return *(int *)a - *(int *)b;
}

int compDown(const void *a, const void *b)
{
 return *(int *)b - *(int *)a;
}
int main()
{
 int a[5] = {5,4,3,2,1};
 int b[5] = {1,2,3,4,5};
 int len = 5;
 int i;
 printf("递增排序结果:\n");
 qsort(a, len, sizeof(a[0]), compUp);
 for(i = 0; i < len; i ++)
  printf("%d ", a[i]);
 printf("\n\n");
 printf("递减排序结果:\n");
 qsort(b, len, sizeof(b[0]), compDown); 
 for(i = 0; i < len; i ++)
   printf("%d ", b[i]);
 printf("\n");
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用C语言编写一个程序员信息排序的程序。 在C语言中,可以使用结构体定义一个程序员信息的数据类型,例如: ``` struct Programmer { char name[50]; int age; float salary; }; ``` 然后,可以使用数组存储多个程序员的信息,例如: ``` struct Programmer programmers[100]; ``` 接下来,可以编写一个排序函数来对程序员信息进行排序,例如按照薪水从高到低排序: ``` void sortProgrammersBySalary(struct Programmer programmers[], int numProgrammers) { int i, j; struct Programmer temp; for (i = 0; i < numProgrammers - 1; i++) { for (j = 0; j < numProgrammers - i - 1; j++) { if (programmers[j].salary < programmers[j+1].salary) { temp = programmers[j]; programmers[j] = programmers[j+1]; programmers[j+1] = temp; } } } } ``` 在这个排序函数中,使用了冒泡排序算法来按照薪水从高到低对程序员信息进行排序。可以根据需要修改排序函数来实现不同的排序方式。最后,可以调用排序函数对程序员信息进行排序,例如: ``` sortProgrammersBySalary(programmers, numProgrammers); ``` 其中,`programmers`是存储程序员信息的数组,`numProgrammers`是数组中程序员信息的数量。 ### 回答2: 当然可以用C语言编写一个人员信息排序的程序。C语言是一种非常强大的编程语言,可以实现各种功能。 首先,你需要定义一个数据结构来表示一个人员的信息,例如可以创建一个结构体来存储姓名、年龄、性别等信息。 然后,你可以使用数组或链表等数据结构来保存多个人员的信息。可以在程序中创建一个人员信息的数组,或者使用动态内存分配来创建一个人员信息的链表。 接下来,你可以实现不同的排序算法来对人员信息进行排序,例如冒泡排序、选择排序、插入排序、快速排序等。你可以使用C语言提供的数组操作来进行元素的交换、比较等操作。 最后,你可以编写一个主函数来调用排序算法,并打印排序后的人员信息。 总的来说,C语言提供了丰富的功能和库函数来实现各种需求,包括人员信息排序。只要你熟悉C语言的基本语法和数据结构,就可以编写一个简单而有效的人员信息排序程序。 ### 回答3: 当然可以用C语言编写一个人员信息排序程序。C语言是一种通用性强的编程语言,提供了许多用于处理数据和排序的函数和技术。 要编写一个人员信息排序程序,首先需要定义一个结构体来表示人员信息,可以包括姓名、年龄、性别等字段。然后,使用数组来保存多个人员信息。 接下来,可以使用排序算法对人员信息进行排序。常见的排序算法有冒泡排序、选择排序、插入排序等。可以选择合适的排序算法根据特定的排序需求来进行排序。 在C语言中,可以使用循环结构和条件语句来实现排序算法。需要遍历数组中的每一个元素,并根据排序规则进行比较和交换操作,直到数组中的所有元素都满足排序规则为止。 最后,可以在程序中打印排序后的人员信息,以便查看排序结果。可以根据需要选择升序或降序排列。 总之,用C语言编写一个人员信息排序程序是完全可行的。只需定义好数据结构,选择合适的排序算法,实现相应的排序逻辑即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值