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

网站建设论文提纲wordpress安卓客户端

网站建设论文提纲,wordpress安卓客户端,国内大中型网站建设知名公司,做本地网站能做吗各位CSDN的uu们你们好呀#xff0c;今天小雅兰的内容还是我们的深度剖析指针呀#xff0c;上篇博客我们学习了回调函数这个知识点#xff0c;但是没有写完#xff0c;因为#xff1a;小雅兰觉得qsort值得单独写出来#xff01;#xff01;#xff01;好啦#xff0c;就… 各位CSDN的uu们你们好呀今天小雅兰的内容还是我们的深度剖析指针呀上篇博客我们学习了回调函数这个知识点但是没有写完因为小雅兰觉得qsort值得单独写出来好啦就让我们进入指针的世界吧 qsort是一个库函数是用来排序的库函数使用的是快速排序的方法  quicksort 我们先来复习一下之前所学习过的一种算法——冒泡排序 冒泡排序——“C”_认真学习的小雅兰.的博客-CSDN博客 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h 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){if (arr[j] arr[j 1]){int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}} } void print_arr(int arr[], int sz) {int i 0;for (i 0; i sz; i){printf(%d , arr[i]);} } int main() {int arr[] { 9,8,7,6,5,4,3,2,1,0 };//排序//使用冒泡排序的算法来排序int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);//打印print_arr(arr, sz);return 0; } 但是这个算法最大的缺点就是只能排序整型如果未来要排序浮点数呢如果未来要排序一些字符串呢结构体呢那么这个函数就搞不定了仅仅能排序固定类型的数据 qsort的好处 现成的可以排序任意类型的数据void qsort( void *base,//指向了待排序数组的第一个元素                      size_t num,//待排序的元素个数                      size_t width,//每个元素的大小单位是字节                      int (__cdecl *compare )(const void *elem1, const void *elem2 )                      //函数指针                      //指向一个函数这个函数可以比较两个元素的大小                    ); qsort是可以排序任意类型的数据的 比较两个整数的大小    比较两个字符串strcmp比较两个结构体数据学生张三、李四指定比较的标准拿什么比较 int a10; void * pa; //void * ——无具体类型的指针所以它可以接收任何类型的地址 //*p;//err void*的指针不能使用解引用操作符 //p;//err 下面我们来使用一下qsort函数 #includestdio.h #includestdlib.h //qsort函数的使用者提供这个函数 int cmp_int(const void* p1, const void* p2) {return *(int*)p1 - *(int*)p2; } void print_arr(int arr[], int sz) {int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}printf(\n); } test1() {int arr[] { 9,8,7,6,5,4,3,2,1,0 };int sz sizeof(arr) / sizeof(arr[0]);//使用qsort来排序整型数组这里就要提供一个比较函数这个比较函数能够比较2个整数的大小//qsort默认是排成升序的qsort(arr, sz, sizeof(arr[0]), cmp_int);print_arr(arr, sz); } int main() {test1();return 0; } qsort这个库函数是不是很神奇呢下面还有更加神奇的 我们来测试一下qsort排序结构体数据 #includestdio.h #includestdlib.h //qsort函数的使用者提供这个函数 int cmp_int(const void* p1, const void* p2) {return *(int*)p1 - *(int*)p2; } struct Stu {char name[20];int age; }; int cmp_stu_by_age(const void* p1, const void* p2) {return ((struct Stu*)p1)-age - ((struct Stu*)p2)-age; } void print(struct Stu* ps, int sz) {int i 0;for (i 0; i 3; i){printf(%d\n, ps[i].age);} } void test2() {struct Stu s[] { {zhangsan,30},{lisi,25 }, { wangwu,50 } };int sz sizeof(s) / sizeof(s[0]);//测试按照年龄来排序qsort(s, sz, sizeof(s[0]), cmp_stu_by_age);print(s, sz); } int main() {test2();return 0; } #includestdio.h #includestdlib.h #includestring.h struct Stu {char name[20];int age; }; int cmp_stu_by_name(const void* p1, const void* p2) {return strcmp(((struct Stu*)p1)-name, ((struct Stu*)p2)-name); } void print(struct Stu *ps, int sz) {int i 0;for (i 0; i 3; i){printf(%s\n, ps[i].name);} } void test2() {struct Stu s[] { {zhangsan,30},{lisi,25},{wangwu,50} };int sz sizeof(s) / sizeof(s[0]);//测试按照名字来排序qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);print(s, sz); } int main() {test2();return 0; }qsort底层是快速排序但是小雅兰还没有学习快速排序的思想所以暂时还不能之间实现qsort所以使用冒泡排序的思想来实现一个类似于qsort这个功能的冒泡排序函数bubble_sort 使用回调函数模拟实现qsort采用冒泡的方式。 测试函数 void test3() {int arr[] { 3,1,5,2,4,9,8,6,7,0 };int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz, sizeof(arr[0]), cmp_int);print_arr(arr, sz); } 主函数 int main() {test3();return 0; } 模拟实现的bubble_sort()函数 //假设排序为升序 //希望这个bubble_sort函数可以排序任意类型的数据 void bubble_sort(void* base, size_t num, size_t width, int(*cmp)(const void* p1, const void* p2)) {//base 待排序数组的第一个元素//元素个数和元素个数的大小不可能是负数所以是size_t类型//函数指针//要确定趟数size_t i 0;for (i 0; i num - 1; i){//一趟冒泡排序的过程size_t j 0;int flag 1;//假设已经有序了//标记变量for (j 0; j num - 1 - i ; j){//两个相邻的元素比较//arr[j] arr[j1]if (cmp((char*)base j * width, (char*)base (j 1) * width) 0){//强制类型转换为char*//因为base为void类型不能之间进行加减乘除所以强制类型转换但是又不能转换为int*因为不一定就排序整型数组flag 0;//交换Swap((char*)base j * width, (char*)base (j 1) * width, width);}}if (flag 1){break;}} } 在bubble_sort()函数中调用了自定义的函数Swap是用来交换元素的 int cmp_int(const void* p1, const void* p2)//不知道要排序什么类型的数组,所以用void* {return *(int*)p1 - *(int*)p2; } 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 print_arr(int arr[], int sz) {int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}printf(\n); } 完整代码如下所示 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h int cmp_int(const void* p1, const void* p2)//不知道要排序什么类型的数组,所以用void* {return *(int*)p1 - *(int*)p2; } 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;} } //假设排序为升序 //希望这个bubble_sort函数可以排序任意类型的数据 void bubble_sort(void* base, size_t num, size_t width, int(*cmp)(const void* p1, const void* p2)) {//base 待排序数组的第一个元素//元素个数和元素个数的大小不可能是负数所以是size_t类型//函数指针//要确定趟数size_t i 0;for (i 0; i num - 1; i){//一趟冒泡排序的过程size_t j 0;int flag 1;//假设已经有序了//标记变量for (j 0; j num - 1 - i ; j){//两个相邻的元素比较//arr[j] arr[j1]if (cmp((char*)base j * width, (char*)base (j 1) * width) 0){//强制类型转换为char*//因为base为void类型不能之间进行加减乘除所以强制类型转换但是又不能转换为int*因为不一定就排序整型数组flag 0;//交换Swap((char*)base j * width, (char*)base (j 1) * width, width);}}if (flag 1){break;}} } void print_arr(int arr[], int sz) {int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}printf(\n); } void test3() {int arr[] { 3,1,5,2,4,9,8,6,7,0 };int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz, sizeof(arr[0]), cmp_int);print_arr(arr, sz); } int main() {test3();return 0; } 好啦小雅兰玩转的qsort就到这里啦这篇博客难度很大确实花了小雅兰很多时间未来还要继续加油呀
http://www.tj-hxxt.cn/news/218299.html

相关文章:

  • wordpress建站服务网站自己怎么做优化
  • 权威的网站建设公司石家庄最新封闭消息
  • 企业网站建立教程网站通栏尺寸
  • 九江做网站哪家便宜建站精灵网站模板
  • 网站建设汇报ppt建站宝盒成品网站演示
  • 北京网站首页排名公司四川省建设厅网站首页
  • h5类型的网站是怎么做的网站备案的影布怎么做
  • 宜春网站建设公司信阳网站建设策划方案
  • 定制网站费用网站后台域名
  • 一个公司可以有两个网站吗亚洲杯中国菲律宾
  • 建网站需要什么资料wordpress后台相应慢
  • 做外贸网站需要请外贸文员吗建设电商网站的总结报告
  • 龙华区深圳北站泉州四方网站开发
  • 网站开发字体过大房地产网站广告销售怎么做
  • html5做的网站公司logo设计logo
  • 淘宝网站那个做的大连市营商环境建设局网站
  • 搜索引擎友好的网站有哪些特点网站制作完成之后我们便进入了什么阶段
  • 网站图片命名规范网络营销推广公司获客
  • 可做长图的网站wordpress前台禁止下载文件
  • 霸州放心的网络建站学做电商的网站有哪些
  • 劳务派遣东莞网站建设商贸营销型网站案例
  • 网站与网页之间的区别是什么wordpress布局可视化
  • 网站建设搭建公司毕设做网站答辩会要求当场演示吗
  • 网站建设需求精确表杭州seo排名收费
  • 建设银行淮安招聘网站叙述网站的建设意义所在
  • 可以做请柬的网站网站开发项目意义
  • 怎样注册一个网站平台重庆市建设工程信息网怎么录项目信息
  • 网站的后期运营及维护费用多语言网站怎么实现的
  • 建设网站所有步骤外包服务公司排名
  • 个人网站注册费用谷歌收录wordpress