首页 > 其他分享 >模拟库函数qsort

模拟库函数qsort

时间:2023-01-06 22:01:02浏览次数:49  
标签:arr int void qsort char width sizeof 模拟 库函数

#include<stdio.h>
#include<string.h>
struct Stu
{
char name[20];
int age;
};
void Swap(char* buf1,char* buf2,int width)
{
int i=0;
for(i=0;i<width;i++)
{
char tmp=*buf1;
*buf1=*buf2;
*buf2=tmp;
buf1++;
buf2++;
}
}
void bubble_sort(void* base,int sz,int width,int (*cmp)(const void* e1,const void* e2))
{
int i=0;
//趟数
for(i=0;i<sz-1;i++)
{
//每一趟比较的对数
int j=0;
for(j=0;j<sz-1;j++)
{
//两个数的比较
if(cmp((char*)base+j*width,(char*)base+(j+1)*width)>0)
Swap((char*)base+j*width,(char*)base+(j+1)*width,width);

}
}
}
int cmp_stu_by_name(const void* e1,const void* e2)
{
return strcmp(((struct Stu*)e1)->name,((struct Stu*)e2)->name);
}

void test2()
{
int i=0;
struct Stu s[3]={{"zhangsan",20},{"lisi",30},{"wangwu",10}};
int sz=sizeof(s)/sizeof(s[0]);
bubble_sort(s,sz,sizeof(s[0]),cmp_stu_by_name);

}

int cmp_int(const void* e1,const void* e2)
{
return *((int*)e1)-*((int*)e2);
}

void test1()
{
int i=0;
int arr[10]={1,2,3,4,5,6,7,8,9,0};
int sz=sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr,sz,sizeof(arr[0]),cmp_int);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
}

int main()
{
test1();
test2();
return 0;
}

标签:arr,int,void,qsort,char,width,sizeof,模拟,库函数
From: https://blog.51cto.com/u_15922371/5994547

相关文章

  • 230102模拟题解
    t1容易发现对于奇数和偶数,能满足条件的长度分别是单调的,所以可以分别二分答案检查。检查的时候对于差分序列做哈希即可,然后用set/map/哈希表判\(B\)的子段是否有\(A......
  • 关于C语言库函数qsort的学习
    #include<stdio.h>#include<stdlib.h>#include<string.h>structStu{charname[20];intage;};//voidqsort(void*base,//size_tnum,//size_twidth,//int(*cmp......
  • 模拟IIC
    /**开引脚的时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);*/#defineI2C_SCLGPIO_Pin_6#defineI2C_SDAGPIO_Pin_7#defineGPIO_I2CGPIO......
  • 数字振镜与模拟振镜
        激光系统的重要配件:振镜;1998年开始在中国被大规模使用,设计思路参考电流表,内部镜片类似表针,驱动信号由计算机控制的正负5V或正负10V的直流信号驱动,以完成预定动......
  • 解决adb devices无法连接各种模拟器
    经常使用到模拟器的童鞋,如果在使用adbdevices命令时,发现出现“Listofdevicesattached”,模拟器USB调试都开启的情况下,也没有连接成功。这种情况一般都是模拟器adb的版......
  • 模拟退火
    模拟退火是一类随机化玄学算法,当一个问题的方案数量极大而且不是一个单峰函数时,我们常使用其求解。而且一些最优化问题如果想不到正解可以用其玄学骗分(这才是重点)退火是......
  • C语言银行业务模拟系统[2023-01-04]
    C语言银行业务模拟系统[2023-01-04]银行业务模拟系统系统要求使用C语言实现一个银行业务模拟程序,实现存取款等基本业务的模拟。选题者需要首先进行需求调研,了解银行的主......
  • FPGA:乒乓球比赛模拟机的设计
    简介开发板:EGO1开发环境:Windows10+XilinxVivado2020数字逻辑大作业题目7:乒乓球比赛模拟机的设计乒乓球比赛模拟机用发光二极管(LED)模拟乒乓球运动轨迹,是......
  • 《安富莱嵌入式周报》第289期:开源回流焊,首发开源跨平台电路仿真软件,用于电气化学的电
    ​​​​ 视频版:​​https://www.bilibili.com/video/BV1ND4y187ps​​  1、开源回流焊主控Github:​​https://github.com/UnexpectedMaker/ReflowMaster​​网站介绍:​......
  • mock.js模拟数据
    1.npm install mockjs2.在src目录下创建个mock文件夹3.mock文件夹下准备json数据(json数据必须格式化,不能留有空格)json需要的图片资源放在public文件夹下,会随dist打包原......