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

网站开发项目的心得体会八方资源网做网站优化怎么样

网站开发项目的心得体会,八方资源网做网站优化怎么样,东莞招聘网哪个平台比较好,搜索关键词推荐目录 1.简单认识冒泡排序 2.进入正文分析如何实现函数 3.1比较两个相邻元素的大小 3.2比较两个相邻元素大小后要换函数 4.my_qsort函数#xff1a; 5.总结#xff1a; 1.简单认识冒泡排序 冒泡排序的步骤如下#xff1a; 比较相邻的两个元素#xff0c;如果第一个元素比…目录 1.简单认识冒泡排序 2.进入正文分析如何实现函数 3.1比较两个相邻元素的大小 3.2比较两个相邻元素大小后要换函数 4.my_qsort函数 5.总结 1.简单认识冒泡排序 冒泡排序的步骤如下 比较相邻的两个元素如果第一个元素比第二个元素大或小就交换它们的位置。对每一对相邻的元素重复上述操作直到数组的末尾。这样最大或最小的元素就被移动到了数组的最后一个位置。除了最后一个元素外对剩余的元素重复以上步骤直到没有任何一对相邻元素需要交换为止 // 冒泡排序 void bubble_sort(int arr[], int len) {int i, j, temp;for (i 0; i len - 1; i){for (j 0; j len - 1 - i; j){if (arr[j] arr[j 1]){temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}} }我们可以基于冒泡排序思想对以上代码进行改造成qsort函数对任意数据类型起到排序作用 了解qsort函数可以看下面的网站或者我的另一篇博客 cplusplus网站https://legacy.cplusplus.com/reference/cstdlib/qsort/?kwqsort 关于qsort函数的使用博客qsort库函数的使用_Jamo的博客-CSDN博客 2.进入正文分析如何实现函数 我们通过观察冒泡函数可以看出我们在最初给的冒泡函数中只能比较整型数据来进行排序 在冒泡函数中的第二个for循环中我们通过每一趟冒泡来依次比较两个相邻的元素大小来决定是否交换他们的位置但如果我们在想要排序的数组中遇到了浮点型数据呢又或是字符型数据呢又或是结构体类型数据呢 显然此时的冒泡函数无法解决我们的燃眉之急。 但我们依然可以借助于冒泡的模板来写出自己的qsort函数来解决问题 我们发现在排序时我们只是排序的数据类型不一样了但排序思想任然是冒泡思想因此我们做出的改变就是对第二个for循环中的比较方法就行改进。 3.1比较两个相邻元素的大小 对于int 类型数据我们可以通过大于小于来直接比较他们的大小来决定是否交换位置 对于所有类型来说我们可以实现一个比较函数来帮我们解决这个问题 //在比较两个相邻元素大小时由于不知道跳过元素有多大因此在处理不确定数据类型排序时使用char * 类型和原数据类型size大小来找到冒泡排序的下两对元素compar((char*)数据1 , (char*)数据2 ) //基于冒泡排序算法的qsort函数 void bubble_qsort(void* base, size_t num, size_t size, int (*compar)(const void* e1, const void* e2)) {int i 0;int j 0;int tmp 0;for (i 0; i num - 1; i){//为了处理不同数据类型比较方法此处的排序需要在原来整型数据冒泡排序写法上进行改造for (j 0; j num - 1 - i; j){//在为比较函数compar找两两元素时由于不知道跳过元素有多大因此在处理不确定数据类型排序时使用char * 类型和原数据类型size大小来找到冒泡排序的下两对元素//比如说比较元素是int类型时char*base加上循环变量j * int类型大小4找到数组首个元素地址第二个元素地址便是cahr*base加上循环变量j1之后 *4 找到第二个元素地址if (compar((char*)base j * size, (char*)base (j 1) * size) 0){//交换swap((char*)base j * size, (char*)base (j 1) * size, size);}}} } 以比较整型数据举例我们自己使用qsort函数时写出自己想要比较的数据类型的compar函数 //比较函数 //返回大于0的数字代表前一个元素大于后一个元素 //返回等于0的数字代表前一个元素等于后一个元素 //返回小于0的数字代表前一个元素小于后一个元素 int compar(const void* e1, const void* e2) {return *(int*)e1 - *(int*)e2; } 3.2比较两个相邻元素大小后要换函数 我们通过自己写一个swap函数来解决这一问题; 为什么要自己写交换函数而不用第三个变量来进行两两交换呢 我们既然是为了写出一个qsort函数比较任意数据类型数据那我们自然也不知道我们将来要交换的元素究竟是什么类型的自然也无法创建第三个变量来使其两两交换 实现swap函数 //给swap函数初始化参数与交换函数compar同理 swap((char*)base j * size, (char*)base (j 1) * size, size);//由于不知道交换元素的类型因此我们决定对相邻两个元素一个字节一个字节进行交换 //将两元素 void swap(char* p1, char* p2, size_t size) {int i 0;for (i 0; i size; i){char tmp *p1;*p1 *p2;*p2 tmp;p1;p2;} } 4.my_qsort函数 //此交换函数原理是对内存中相邻元素一个字节一个字节交换 void swap(char* p1, char* p2, size_t size) {int i 0;for (i 0; i size; i){char tmp *p1;*p1 *p2;*p2 tmp;p1;p2;}} //比较函数 //返回大于0的数字代表前一个元素大于后一个元素 //返回等于0的数字代表前一个元素等于后一个元素 //返回小于0的数字代表前一个元素小于后一个元素 int compar(const void* e1, const void* e2) {return *(int*)e1 - *(int*)e2; }//基于冒泡排序算法的qsort函数 void bubble_qsort(void* base, size_t num, size_t size, int (*compar)(const void* e1, const void* e2)) {int i 0;int j 0;int tmp 0;for (i 0; i num - 1; i){//为了处理不同数据类型比较方法此处的排序需要在原来整型数据冒泡排序写法上进行改造for (j 0; j num - 1 - i; j){//不知道跳过元素有多大因此在处理不确定数据类型排序时使用char * 类型和原数据类型size大小来找到冒泡排序的下两对元素//返回大于0的数字代表前一个元素大于后一个元素//返回等于0的数字代表前一个元素等于后一个元素//返回小于0的数字代表前一个元素小于后一个元素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() {int num_arr[10] { 10,9,8,7,6,5,4,3,2,1 };int sz sizeof(num_arr) / sizeof(num_arr[0]);printf(原来的顺序);print_arr(num_arr, sz);bubble_qsort(num_arr, sz, sizeof(num_arr[0]), compar);printf(排序的顺序);print_arr(num_arr, sz);return 0; } 5.总结 实现该函数最主要的部分便是交换函数compar函数参数的书写如何在不知道元素数据类型的情况下找到元素来进行大小比较以及如何在不知道元素数据类型的情况下对两个相邻元素来交换。 以上便是全部内容了感谢大家的支持和鼓励下次见
http://www.hkea.cn/news/14412560/

相关文章:

  • 做网站用c 还是php网站免费空间购买
  • 做网站宣传图的网站深圳微信公众平台
  • 网站制作常见问题手机端网站优化怎么做
  • 外贸公司网站建站北京石景山网站建设
  • 在线查询网站收录值得浏览的外国网站
  • 池州市建设管理处网站国家企业信用信息公示系统网官方
  • 网站关键技术wordpress调用标签代码在线
  • 网站建设运行工作情况总结网站建设 苏州
  • 百度蜘蛛站长服务平台谷歌三件套
  • 中小企业门户网站建设策略北京市建设中心网站
  • 屋领网站固链徐州网站app开发
  • 国外手表网站房地产 网站 欣赏
  • 海口网站制作策划提供网站建设出售
  • 纪检监察网站建设的意义能自己做生物实验的网站
  • 苏州网站建设及推广门户地方网站 策略
  • 昆明网站建设天锐科技广西壮族自治区工商行政管理局
  • 公司网站建设设计方案wordpress中文 速度慢
  • 专业制作企业网站wordpress动静分离oss代码
  • 做吃穿住行网站全球军情动态
  • 公司网站搭建费用网站 前台 后台
  • 电子商务行业网站有哪些涟水住房和城乡建设局网站
  • 网站开发 零基础广电基础设施建设官方网站
  • 农产品如何建设网站郑州市哪里有网站建设
  • 婚庆网站源码seo外链网
  • 如何利用国外网站开发客户服务器 多个网站
  • 恶意镜像网站程序生物科技网站建设 中企动力北京
  • 做网站复杂吗wordpress 可视化 编辑
  • 简阳电力建设立项网站无锡大型设计网站报价
  • 网站没有百度权重网站负责人幕布照片
  • 盐山做网站广德县建设协会网站