首页 > 其他分享 >qsort排序的用法

qsort排序的用法

时间:2023-05-30 20:46:14浏览次数:35  
标签:sz arr int void qsort 用法 排序 e1 e2

//void Bubble_sort(int arr[], int sz)
//{
// int i = 0;
// for (i = 0; i < sz - 1; i++)//确定排序执行的次数
// {
// int j = 0;
// for (j = 0; j < sz - 1 - i; j++)//确定每次排序两组元素的对比次数
// {
// int tmp = 0;
// if (arr[j] > arr[j + 1])
// {
// tmp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = tmp;
// }
// }
// }
//
//}
struct Stu
{
char name[20];
int age;

};
int cmp_int(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;//e1 e2 调用前需要类型转换
}
int cmp_float(const void* e1,const void* e2)
{
return (int)(*(float*)e1 - *(float*)e2);//返回值 转换成int 类型
}
int cmp_Stu_by_age(const void* e1, const void* e2)
{

return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;//e1 e2 调用前需要类型转换
}
int cmp_Stu_by_name(const void* e1, const void* e2)
{

return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);//e1 e2 调用前需要类型转换
//strcmp(a,b),比较字符串的大小 a>b return 1,a=b return 0,a<b return -1;
}
void test1()
{
int arr[10] = { 0,9,7,6,8,5,4,3,2,1 };
int sz = sizeof(arr) / sizeof(arr[0]);
qsort(arr, sz, sizeof(arr[0]), cmp_int);//库函数 //cmp_int 返回的是int 类型
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void test2()
{
float f[] = { 9.0,7.0,5.0,3.0,2.0 };
int sz = sizeof(f) / sizeof(f[0]);
qsort(f, sz, sizeof(f[0]), cmp_float);//cmp_float 返回的是int 类型
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%f ", f[i]);
}
printf("\n");
}
void test3()
{
struct Stu s[3] = { {"zhangsan",26},{"lisi",23},{"wangwu",25} };
int sz = sizeof(s) / sizeof(s[0]);
qsort(s, sz, sizeof(s[0]), cmp_Stu_by_name);
}
int main()
{
test1();
test2();
test3();
//Bubble_sort(arr, sz);
char a = 0;
void* p = &a;//void* 无类型指针 可以接收任意类型的地址
//不能进行解引用操作,不能进行+ - 操作;
return 0;
}

标签:sz,arr,int,void,qsort,用法,排序,e1,e2
From: https://www.cnblogs.com/zrk-8008/p/17444346.html

相关文章

  • uiautomator2获取UIObject元素的属性info用法
    info是UIAutomator2中用来获取控件属性信息的方法。该方法可以获取到指定元素的一些属性信息,例如控件的文本、坐标、大小、类名、包名、是否可见等。使用该方法可以帮助我们更好的理解应用程序的UI结构,并找到需要操作的控件元素。d(text=element,instance=index).infoinfo是U......
  • mysql设置字段的排序规则对大小写敏感
    在开发中遇到一个问题:在插入一张表中提示主键冲突了,对数据分析了很久,没有发现问题。后面发现是数据库设计的时候设定的排序规则指定的是COLLATE=utf8_general_ci,而不是用COLLATE=utf8_bin,这两个规则的区别是什么呢?utf8_general_ci:这个排序规则是不区分大小写的,也就是说,在比......
  • vue模拟el-table演示插槽用法
    vue模拟el-table演示插槽用法很多人知道插槽分为三种,但是实际到elementui当中为什么这么用,就一脸懵逼,接下来就跟大家聊一聊插槽在elementui中的应用,并且自己写一个类似el-table的组件vue的slot分为三种::匿名插槽,具名插槽,作用域插槽,主要作用:让父组件可以向子组件指定位置插入......
  • 常用的排序算法总结
    常用的排序算法一、冒泡排序冒泡排序(BubbleSort),是一种较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这......
  • 33. 搜索旋转排序数组
    分析:A对于题目中定义的旋转数组,从中间一分为二。一定是被分为一个有序数组,一个旋转数组(循环数组)。B若对旋转数组再次从中间分割,会重复A的操作。对有序数组二分可看做普通二分查找一致操作。定理一:只有在顺序区间内才可以通过区间两端的数值判断target是否在其中。定理二:判......
  • 二叉排序链表C语言代码实现
    #include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefstructBSTNode{intdata;structBSTNode*lchild;structBSTNode*rchild;}BSTNode,*BSTree;BSTNode*InitNode(intdata){BSTNode*node=(BSTNode......
  • 二叉排序树的三种遍历方式和实现源代码
    二叉排序树(BinarySearchTree)是一种特殊的二叉树,它满足以下性质:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。这种特性使得对于二叉排序树的遍历具有一定的规律。前序遍历(PreorderTraversal)是一种遍历二叉树的方法。......
  • Problem L: STL——字符串排序
    HomeWebBoardProblemSetStandingStatusStatisticsProblemL:STL——字符串排序TimeLimit:1Sec  MemoryLimit:128MBSubmit:3482  Solved:1666[Submit][Status][WebBoard]Description  对N个字符串排序。  0<N<=5000......
  • 不管在什么时候,都要尽可能使用熟悉的惯用法和API
    //不管在什么时候,都要尽可能使用熟悉的惯用法和API。//一个char不是一个String,而是更像一个int。//Random.nextInt(int)的规范描述道:“返回一个伪随机的、均等地分布在从0//(包括)到指定的数值(不包括)之间的一个int数值”[Java-API]。//3个bug:分支2永远不会到达;没有break,总......
  • 学英语必须记牢的十类词性分类及用法
    英语语法最最基础的就是词性了,因为后续的各种时态变化、从句很多的考点都是结合词性才产生的!要想学好语法,那就一定要打牢词性这个基础!今天皮卡丘总结整理了常考词类的详解+用法+考点。01、词性的分类词类又叫词性,英语单词根据其在句子中的功用,可以分成十个大类。1.名词nounn.......