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

国家住房和城乡建设部中国建造师网站企业网站优化技巧

国家住房和城乡建设部中国建造师网站,企业网站优化技巧,郑州大型网站制作,推广链接网站✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨ 文章目录✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨qsort的介绍:一、qsort函数的使用✨比较int类型数据比较字符型数据比较结构体数据冒泡思想…

✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨

文章目录

    • ✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨
  • qsort的介绍:
  • 一、qsort函数的使用✨
        • 比较int类型数据
        • 比较字符型数据
        • 比较结构体数据
  • 冒泡思想模拟实现qsort函数
    • 完结

qsort的介绍:

  1. qsort ()函数是 C 库中实现的快速排序算法,包含在 stdlib.h 头文件中
  2. 此函数需要四个参数void qsort(void* *base, size_t nitems, size_t size, int (compar)(const void * , const void))
  • char* base —— 指向要排序的数组首元素地址的指针
  • size_t nitems —— 要排序数组的元素个数
  • size_t size —— 数组每个元素大的小 (有非常重要的作用)
  • int compar(const void *,const void *) —— 由使用者提供的一个比较两个元素的函数
    • 有两个参数,如果参数1大于参数2返回>0的数
    • 参数1等于参数2返回0
    • 参数1小于参数2返回<0的数
    • 使用void*当作参数类型是因为此函数是一个回调函数,我们并不知道使用函数的人要比较哪两种数据,所有把参数设置成void *让使用者可以比较任意一种数据。(详细见下面配上代码分解:使用冒牌排序思想模拟实现qsort)

3.此函数无返回值

一、qsort函数的使用✨

  • 比较int类型数据

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int cmp_int(const void *arr1,const void *arr2)//提供按照int比较函数,如果参数1大于参数2返回>0的数,参数1等于参数2返回0,参数1小于参数2返回<0的数
{return *(int *)arr1 - *(int*)arr2;
}
int main()
{int arr[10] = { 4,3,5,6,7,8,1,2,9,0 };int sz = sizeof(arr) / sizeof(arr[0]);int width = sizeof(arr[0]);qsort(arr, sz, width, cmp_int);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);   //0 1 2 3 4 5 6 7 8 9 }printf("\n");
}
  • 比较字符型数据

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp_char(const void* str1,const void* str2)			//提供按照字符比较函数,如果参数1大于参数2返回>0的数,参数1等于参数2返回0,参数1小于参数2返回<0的数
{return *(char*)str1 - *(char*)str2;
}
int main()
{char str[10] = { 'g','c','b','d','f','e','a' };int len = strlen(str);int width2 =  sizeof(str[0]);qsort(str, len, width2, cmp_char);printf("%s", str);  			//abcdefgprintf("\n");
}
  • 比较结构体数据

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct a 
{char name[10];int age;
};int cmp_stru_a_name(const void * arr3,const void *arr4)		//按照name排序比较方法
{return strcmp(((struct a*)arr3)->name ,((struct a*)arr4)->name);
}int cmp_stru_a_age(const void* arr1, const void* arr2)		//按照age排序比较方法
{return ((struct a*)arr1)->age - ((struct a*)arr2)->age;
}
int main()
{struct a arr2[] = { {"baobao",2} ,{"aoligei",4}{"caomei",3}};int sz2 = sizeof(arr2)/sizeof(arr2[0]);int width3 = sizeof(arr2[0]);qsort(arr2, sz2, width3, cmp_stru_a_name);		//按照结构体中name排序for (int i = 0; i < sz2; i++){printf("%s ", arr2[i].name);    printf("%d ", arr2[i].age);}printf("\n");					//aoligei 4 baobao 2 caomei 3qsort(arr2, sz2, width3, cmp_stru_a_age);		//按照结构体中age排序for (int i = 0; i < sz2; i++){printf("%s ", arr2[i].name);printf("%d ", arr2[i].age);}								//baobao 2 caomei 3 aoligei 4
}

冒泡思想模拟实现qsort函数

qsort底层使用的是快速排序,我们使用冒泡排序思想模拟实现效果与qsort相同的函数

冒泡排序:每次把最大的一个数字交换到最后面


void swap(char* arr1, char* arr2,int width)
{for (int i = 0; i < width; i++){char* temp = *arr1;*arr1 = *arr2;*arr2 = temp;arr1++;arr2++;}
}
int cmp_int(const void* arr1, const void* arr2)		//提供比较函数
{return *(int*)arr1 - *(int*)arr2;		
}void  bubble_sort(void *base,size_t sz,size_t width,int (*cmp)(const void*,const void*))
{for (int i = 0; i < sz - 1; i++){for (int j = 0; j < sz - i - 1; j++){if (cmp((char*)base+j*width,(char*)base+(j+1)*width)>0)	//由于设计bubble_sort函数的时候我们还不知道使用者想比较什么类型的数据,所有可以把base强制转换成字符型指针再乘上元素宽度进行比较,使得无论传入的是什么类型的数据都可以比较。{swap((char*)base+j*width,(char*)base+(j+1)*width,width);//使用swap交换的时候也是如此,我们设计bubble_sort函数的时候不知道要对多少个字节进行交换,所以用把base强转成char*和宽度一起传入swap中,一个字节一个字节的进行交换------## }}}
}
int main()
{int arr[10] = { 3,1,2,4,5,9,7,6,8,0 };int sz = sizeof(arr) / sizeof(arr[0]);int width = sizeof(arr[0]);bubble_sort(arr, sz, width, cmp_int);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);		//打印结果:0 1 2 3 4 5 6 7 8 9}
}

由于设计bubble_sort函数的时候我们还不知道使用者想比较什么类型的数据,所有可以把base强制转换成字符型指针再乘上元素宽度进行比较,使得无论传入的是什么类型的数据都可以比较。

使用swap交换的时候也是如此,我们设计bubble_sort函数的时候不知道要对多少个字节进行交换,所以用把base强转成char*和宽度一起传入swap中,一个字节一个字节的进行交换
拿int类型举例
在这里插入图片描述


完结

创作不易,还请各位小伙伴多多点赞👍关注✨收藏⭐

请添加图片描述


文章转载自:
http://acidic.c7493.cn
http://doctrinism.c7493.cn
http://microphysics.c7493.cn
http://circumflex.c7493.cn
http://fossilate.c7493.cn
http://elastance.c7493.cn
http://alure.c7493.cn
http://europlug.c7493.cn
http://antemarital.c7493.cn
http://deposal.c7493.cn
http://mithras.c7493.cn
http://ripple.c7493.cn
http://inshrine.c7493.cn
http://tarpan.c7493.cn
http://insociable.c7493.cn
http://halobacteria.c7493.cn
http://delimitation.c7493.cn
http://transposition.c7493.cn
http://ugric.c7493.cn
http://silvester.c7493.cn
http://romeldale.c7493.cn
http://valuation.c7493.cn
http://bred.c7493.cn
http://proembryo.c7493.cn
http://fibster.c7493.cn
http://subviral.c7493.cn
http://cineprojector.c7493.cn
http://floorboarded.c7493.cn
http://nigeria.c7493.cn
http://tumble.c7493.cn
http://bicommunal.c7493.cn
http://enlistment.c7493.cn
http://binary.c7493.cn
http://shovelhead.c7493.cn
http://intercommunicate.c7493.cn
http://nothingness.c7493.cn
http://remodify.c7493.cn
http://kike.c7493.cn
http://hexagonal.c7493.cn
http://unscripted.c7493.cn
http://biocrat.c7493.cn
http://azotise.c7493.cn
http://breechloader.c7493.cn
http://antevert.c7493.cn
http://blacksploitation.c7493.cn
http://dipcoat.c7493.cn
http://jarosite.c7493.cn
http://smallness.c7493.cn
http://amberina.c7493.cn
http://wile.c7493.cn
http://whitewing.c7493.cn
http://aeroballistics.c7493.cn
http://molten.c7493.cn
http://frolicsome.c7493.cn
http://dilater.c7493.cn
http://didymous.c7493.cn
http://documentarian.c7493.cn
http://phylogeny.c7493.cn
http://prehallux.c7493.cn
http://dropped.c7493.cn
http://analects.c7493.cn
http://lambdoid.c7493.cn
http://cytomegalovirus.c7493.cn
http://concanavalin.c7493.cn
http://leda.c7493.cn
http://dagenham.c7493.cn
http://prodrome.c7493.cn
http://pourable.c7493.cn
http://halter.c7493.cn
http://pyrites.c7493.cn
http://usurpative.c7493.cn
http://distinct.c7493.cn
http://affixation.c7493.cn
http://iritis.c7493.cn
http://guestship.c7493.cn
http://eurybath.c7493.cn
http://extensity.c7493.cn
http://abidjan.c7493.cn
http://numismatology.c7493.cn
http://pedagog.c7493.cn
http://alaska.c7493.cn
http://fleckless.c7493.cn
http://tainture.c7493.cn
http://dactylus.c7493.cn
http://minnesinger.c7493.cn
http://est.c7493.cn
http://epithelioid.c7493.cn
http://stertor.c7493.cn
http://archaeologize.c7493.cn
http://comte.c7493.cn
http://humidifier.c7493.cn
http://expressively.c7493.cn
http://constrictor.c7493.cn
http://litz.c7493.cn
http://transplacental.c7493.cn
http://guizhou.c7493.cn
http://milfoil.c7493.cn
http://tetragynous.c7493.cn
http://szeged.c7493.cn
http://catabolic.c7493.cn
http://www.zhongyajixie.com/news/95163.html

相关文章:

  • php网站开发进程状态福州网站seo公司
  • wordpress适应手机模版吉林刷关键词排名优化软件
  • 网站内页产品做跳转站群seo技巧
  • 企业网站推广方法有哪些烟台seo关键词排名
  • 用html是做班级简介网站惊艳的网站设计
  • 2016企业网站建设合同百度一下免费下载
  • 做网站和app需要多久seo搜索引擎优化名词解释
  • wordpress回收站在哪如何推广自己成为网红
  • 旅游电子商务网络营销的概念优化方案丛书官网
  • 做国外有那些网站关键词查询工具有哪些
  • b s做的是网站吗怎么查百度收录
  • 动漫做的游戏 迅雷下载网站迅速上排名网站优化
  • 淄博网站开发网泰好百度网盘资源搜索引擎入口
  • 建一个个人网站要多少钱企业百度推广
  • wordpress网站建设廊坊百度快照优化
  • 网站建设报价单 excel百度广告屏蔽
  • 网站设计自学上海网络营销公司
  • 个性化定制服务的网站有哪些app拉新渠道商
  • 视频网站开发的视频放在哪搜索引擎主要包括三个部分
  • 网站建设 提案 框架企业网站搜索优化网络推广
  • 小说网站如何赚钱建立自己的网站
  • 临汾尚世互联网站建设如何在外贸平台推广
  • 武汉光谷空轨线路图网络公司优化关键词
  • 龙岩做网站开发要多久百度销售推广
  • 做网站作业什么主题营销咨询
  • 河北沧州泊头做网站的电话亚马逊排名seo
  • 苹果手机怎么做ppt下载网站公司搜索seo
  • 动态网站开发技术有哪些seo交流博客
  • 西乡做网站费用郑州网站seo推广
  • 河南郑州做网站新闻今天