qsort函数详解

简介: qsort函数详解

目录

整型数组排序

浮点型数组排序:

结构体排序:

按年龄排:

按名字拼音排:

c库函数——qsort

是<stdlib.h>的一个库函数,作用是对数组进行排序。

image.png

  • base -- 指向要排序的数组的第一个元素的指针。
  • nitems -- 由 base 指向的数组中元素的个数。
  • size -- 数组中每个元素的大小,以字节为单位。
  • compar -- 用来比较两个元素的函数。

image.png

compar函数要自己写,里面对两个元素进行比较,

第一个大于第二个返回1

第一个等于第二个返回0

第一个小于第二个返回-1

qsort函数没有返回值

例子:

整型数组排序

#include<stdio.h>
#include<stdlib.h>
int compar(const void* e1, const void* e2)
{
  return (*(int*)e1 - *(int*)e2);
}
int main()
{
  int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  qsort(arr, sz, sizeof(arr[0]), compar);
  int j = 0;
  for (j = 0; j < sz; j++)
  {
    printf("%d ", arr[j]);
  }

输出结果:

image.png

浮点型数组排序:

#include<stdio.h>
#include<stdlib.h>
int compar(const void* e1, const void* e2)
{
  return (*(int*)e1 - *(int*)e2);
}
int main()
{
  float arr[10] = { 9.0,8.0,7.0,6.0,5.0,4.0,3.0,2.0,1.0,0.0 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  qsort(arr, sz, sizeof(arr[0]), compar);
  int j = 0;
  for (j = 0; j < sz; j++)
  {
    printf("%0.2f ", arr[j]);
  }
}

输出结果:

image.png

结构体排序:

按年龄排:

#include<stdio.h>
#include<stdlib.h>
struct Stu
{
  char name[20];
  int age;
};
int compar(const void* e1, const void* e2)
{
  return(((struct Stu*)e1)->age - ((struct Stu*)e2)->age);
}
int main()
{ 
  struct Stu s[3] = { {"张三",20},{"李四",45},{"王五",15} };
  int sz = sizeof(s) / sizeof(s[0]);
  qsort(s, sz, sizeof(s[0]), compar);
  int j = 0;
  for (j = 0; j < sz; j++)
  {
    printf("%s,%d   ",s[j].name,s[j].age);
  }
}

输出结果:

image.png

按名字拼音排:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Stu
{
  char name[20];
  int age;
};
int compar(const void* e1, const void* e2)
{
  return  strcmp(((struct Stu*)e1)->name ,((struct Stu*)e2)->name);
}
int main()
{ 
  struct Stu s[3] = { {"张三",20},{"李四",45},{"王五",15} };
  int sz = sizeof(s) / sizeof(s[0]);
  qsort(s, sz, sizeof(s[0]), compar);
  int j = 0;
  for (j = 0; j < sz; j++)
  {
    printf("%s,%d   ",s[j].name,s[j].age);
  }
}

输出结果:

image.png

相关文章
|
7月前
qsort函数专题
qsort函数专题
40 2
|
7月前
|
编译器 C语言
库函数qsort的使用及利用冒泡排序模拟实现qsort
库函数qsort的使用及利用冒泡排序模拟实现qsort
|
6月前
|
C语言
qsort函数的应用
qsort函数的应用
33 0
qsort函数和模拟实现qsort函数
qsort函数和模拟实现qsort函数
|
7月前
|
搜索推荐
【qsort函数实现】
【qsort函数实现】
|
7月前
|
JavaScript 前端开发
sort函数排序
sort函数排序
55 0
sort函数排序
|
7月前
|
算法 搜索推荐 C语言
快速排序和qsort函数详解详解qsort函数
快速排序和qsort函数详解详解qsort函数
95 0
|
容器
sort函数
sort函数
|
搜索推荐 C语言
qsort函数的讲解
qsort函数的讲解
57 0
qsort函数详细讲解以及利用冒泡排序模拟实现qsort函数
qsort函数详细讲解以及利用冒泡排序模拟实现qsort函数
70 0