当前位置: 首页 > news >正文

荣成市建设局网站用微信小程序连接WordPress

荣成市建设局网站,用微信小程序连接WordPress,软件项目管理包括哪些内容,做网站后端qsort 函数的使用 首先qsort函数是使用快速排序算法来进行排序的#xff0c;下面我们打开官网来查看qsort是如何使用的。 这里有四个参数#xff0c;首先base 是至待排序的数组的首元素的地址#xff0c;num 是值这个数组的元素个数#xff0c;size 是指每个元素的大小下面我们打开官网来查看qsort是如何使用的。 这里有四个参数首先base 是至待排序的数组的首元素的地址num 是值这个数组的元素个数size 是指每个元素的大小最后是一个函数指针用来比较两个元素的不同其中这个函数需要有返回值当返回值小于0时p1需要放在p2前面等于0时p1和p2不用改变位置当返回值大于0时p1需要放在p2的后面由此可见这个函数需要我们自己去编写然后通过函数指针来调用。 下面我们来看看qsort的实践效果 #include stdio.h #include string.h #include stdlib.htypedef struct Stu {char name[20];int age; }Stu;int cmp_array(const void* p1,const void* p2) {return *(int*)p1 - *(int*)p2; }int cmp_stu_name(const void* p1, const void* p2) {return strcmp(((Stu*)p1)-name, ((Stu*)p2)-name); }int cmp_stu_age(const void* p1, const void* p2) {return ((Stu*)p1)-age - ((Stu*)p2)-age; }void PrintArray(int arr[], int sz) {for (int i 0; i sz; i){printf(%d , arr[i]);}printf(\n); }void PrintStu(Stu* s, int sz) {for (int i 0; i sz; i){printf(%s %d, s[i].name, s[i].age);printf(\n);} }int main() {Stu s[3] { {zhangsan,18},{lisi,19},{sunwu,15} };int sz sizeof(s) / sizeof(s[0]);int arr[10] { 4,8,5,7,9,6,2,0,1,3 };int sz2 sizeof(arr) / sizeof(arr[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_name);PrintStu(s, sz);printf(\n);qsort(s, sz, sizeof(s[0]), cmp_stu_age);PrintStu(s, sz);printf(\n);qsort(arr, sz2, sizeof(arr[0]), cmp_array);PrintArray(arr, sz2);printf(\n);return 0; }使用C语言模拟qsort 这里我们使用冒泡排序算法进行排序使用C语言来模拟qsort函数。        首先我们来回顾冒泡排序算法有两个要点一个是排序的趟数另一个是每一趟排序的次数。这里以升序为例 void bubble_sort(int arr[], int sz) {for (int i 0; i sz - 1; i){for (int j 0; j sz - 1 - i; j){if (arr[j] arr[j 1]){int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}} }然后来模拟qsort函数呢首先qsort函数几乎对任何数据都可以排序所以我们的bubble_sort函数要做出相应调整然后设计形参呢对任何数据进行排序也就是说数据的类型和大小都是不确定的这样的话我们可以使用size_t来作为数据类型用void来接收不同类型的指针实在不会的我们可以参考qsort 函数来设计的。 void base 接收待排序的首元素的地址size_t num 和 size_t size 来接收元素个数和元素大小最后就是最重要的函数设计了。 void bubble_sort(void* base, size_t num, size_t size, int (*compar) (const void* p1, const void* p2)) 设计好形参我们来考虑一下函数的主体部分首先趟数是不改变的每趟的次数也不用改变毕竟我们还是使用冒泡排序算法这样的话还有最后一个就是if这个判断语句应为我们无法直接通过像上面一样对两个数进行直接比较我们需要调用函数来进行比较也就是compar函数。 那有个问题我们如何来写compar 函数的指针呢这个指针不能大也不能小否则就无法准确比较或者会产生越界行为这样我们可以使用char* 为什么呢首先我们需要两个两个数据来进行一一比较这样我们需要知道准确的地址必须是恰好指向每个元素的地址而char 刚好就是一个字节只要准确地进行指针加法运算就能得到这个元素地地址。 if (compar((char*)base j * size, (char*)base (j 1) * size) 0) 还有个问题我们怎么交换数据呢其实和上面的理由差不多由于数据的类型不同他们的大小也不同。这时我们可以使用char 因为char 是最小的数据类型了也就是一个字节无论数据是几个字节都是char 的倍数也就是说都可以用一个字节的倍数来表示这样的话我们只需要知道数据类型的大小size) 就可以来通过循环遍历来一个字节一个字节来进行进行交换就可以了,我们可以封装一个函数swap。 void swap(char* p1, char* p2, size_t size) {int i 0;while (i size){char tmp *(p1 i);*(p1 i) *(p2 i);*(p2 i) tmp;i;} }那么我们最后得到的bubble_sort函数如下 void bubble_sort(void* base, size_t num, size_t size, int (*compar) (const void* p1, const void* p2)) {for (int i 0; i num - 1; i){for (int j 0; j num - 1 - i; j){if (compar((char*)base j * size, (char*)base (j 1) * size) 0){swap((char*)base j * size, (char*)base (j 1) * size);}}} }我们来演练一下看看效果是不是和qsort有着一样的效果 代码如下 #include stdio.h #include string.htypedef struct Stu {char name[20];int age; }Stu;int cmp_array(const void* p1,const void* p2) {return *(int*)p1 - *(int*)p2; }int cmp_stu_name(const void* p1, const void* p2) {return strcmp(((Stu*)p1)-name, ((Stu*)p2)-name); }int cmp_stu_age(const void* p1, const void* p2) {return ((Stu*)p1)-age - ((Stu*)p2)-age; }void PrintArray(int arr[], int sz) {for (int i 0; i sz; i){printf(%d , arr[i]);}printf(\n); }void PrintStu(Stu* s, int sz) {for (int i 0; i sz; i){printf(%s %d, s[i].name, s[i].age);printf(\n);} }void swap(char* p1, char* p2, size_t size) {int i 0;while (i size){char tmp *(p1 i);*(p1 i) *(p2 i);*(p2 i) tmp;i;} }void bubble_sort(void* base, size_t num, size_t size, int (*compar) (const void* p1, const void* p2)) {for (int i 0; i num - 1; i){for (int j 0; j num - 1 - i; j){if (compar((char*)base j * size, (char*)base (j 1) * size) 0){swap((char*)base j * size, (char*)base (j 1) * size, size);}}} }int main() {Stu s[3] { {zhangsan,18},{lisi,19},{sunwu,15} };int sz sizeof(s) / sizeof(s[0]);int arr[10] { 4,8,5,7,9,6,2,0,1,3 };int sz2 sizeof(arr) / sizeof(arr[0]);bubble_sort(s, sz, sizeof(s[0]), cmp_stu_name);PrintStu(s, sz);printf(\n);bubble_sort(s, sz, sizeof(s[0]), cmp_stu_age);PrintStu(s, sz);printf(\n);bubble_sort(arr, sz2, sizeof(arr[0]), cmp_array);PrintArray(arr, sz2);printf(\n);return 0; }
http://www.zqtcl.cn/news/293871/

相关文章:

  • 商城类网站用什么做珠海找工作哪个网站好
  • 宁波建站模板厂家太原企业网站排名
  • 厦门网站建设定制多少钱wordpress能用一个数据库
  • 找人做网站需要准备什么材料怎么建设自己淘宝网站首页
  • 汽车网站建设费用js怎么做网站
  • 四川万景建设工程有限公司网站做公司网站用什么系统
  • 长沙企业建站系统3d视频制作公司
  • 长沙的网站制作公司网站建设方案的需求分析
  • 电子商务网站发展建设论文网站开发需要经过的几个主要阶段
  • 建设网站外贸做网站必须会php吗
  • 网站建设费用的请示丹徒区建设局网站
  • 上海网站制作机构个人做外贸网站违法吗
  • 咖啡厅网站开发目标汕头最新消息今天
  • 广州做外贸网站的公司简介做行业门户网站注意什么
  • 专业网页网站设计图书成都医院做网站建设
  • 浙江网站建设dyfwzx网站开发的广告词
  • 网站 seo 优化 效果中华室内设计网公众号下载
  • 如何自己建网站企业网站建站快车的优点
  • 目前做网站的公司有哪些管理系统中的计算机应用
  • 百度网站服务器企业网站报价
  • 网站后台账户如何做会计分录电商数据查询平台
  • 素材动图网站90设计app下载
  • 绍兴网站设计公司网站空间位置是什么
  • 高端网站设计品牌珠海网站建设最新报价
  • 做网站的商家怎么赚取流量费房地产怎么做网站推广
  • 企业网站建设基本流程网站积分方案
  • 网站定位与功能分析网站常见故障
  • 深圳电子商务网站制作桂林市防疫最新政策
  • 北京网站建设备案代理网站建设计划建议
  • 湛江公司做网站wordpress如何设置网站地图