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

3030wa网站开发学校中山seo优化

3030wa网站开发学校,中山seo优化,网上推广产品哪个网好,图书馆管理网站建设logo目录 1. 快速排序 1.1 快速排序理论分析 1.2 快速排序的模拟实现 2. qsort的模拟实现 2.1 qsort的理论分析 2.2 qsort的模拟实现 qsort函数是基于快速排序思想设计的可以针对任意数据类型的c语言函数。要对qsort进行模拟实现#xff0c;首先就要理解快速排序。 1. 快…目录 1. 快速排序 1.1 快速排序理论分析  1.2 快速排序的模拟实现  2. qsort的模拟实现  2.1 qsort的理论分析 2.2 qsort的模拟实现 qsort函数是基于快速排序思想设计的可以针对任意数据类型的c语言函数。要对qsort进行模拟实现首先就要理解快速排序。 1. 快速排序 1.1 快速排序理论分析  上一期博客选择排序冒泡排序插入排序快速排序及其优化-CSDN博客我们大概讲解了快速排序的思路现在我们来详细讲解以下快速排序。 让我们来逐帧分析快速排序的思想。 1. 第一步便是找到基准数开始分区基准数可以选择第一个最后一个也可以是随机的为了便于理解以下的图都默认选的是第一个当然代码是随机的重要的是先把交换三个数的本质理解到 2.  分而治之调整后基准数的左右两边再进行相同的操作直到不能再排序数组长度为1时就不能再排序了 1.2 快速排序的模拟实现  以上便是对快速排序底层逻辑的分析 接下来以c语言为例讲解模拟实现快速排序。 1. 选一个基准数这里选的是首元素 2. 开始分区遍历整个数组开始交换位置三个数小的在前大的在后 3. 开始递归左右两边都要开始递归由于需要知道边界所以分区时应该再返回基准数的地址。同时为了避免递归递而不归应设置最小的长度 /*返回值基准数最后的下标参数需要分区的部分从头到尾开始排 */ int partition(int arr[], int start, int end) {int len end - start;int* ppivot arr start;int* s ppivot 1;while (len--){if (*ppivot *s){int temp *s;*s *(ppivot 1);*(ppivot 1) *ppivot;*ppivot temp;ppivot;}s;}return ppivot - arr; }/*返回值arr首元素的地址参数需要排序的部分从头到尾 */int* quick_sort(int arr[], int start, int end) {assert(arr);int* p arr;if (end start){int pivot partition(arr, start, end);quick_sort(arr, start, pivot - 1);quick_sort(arr, pivot 1, end);}return p; } 当然对于分区的排序可以进行优化使用双指针也可以。双指针就是首尾往中间交换的模式效率自然更高。这里不过多展开去讲。 2. qsort的模拟实现  2.1 qsort的理论分析 C 库函数 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 对数组进行排序。它可以接收任意类型进行排序其实跟快速排序接收int类型差不多只是这里多了一个强制类型转换。 2.2 qsort的模拟实现 qsort的模拟实现基本就是在quick_sort上做改造将原来只可以进行int数据类型的改成任意数据类型。 1. 原来是数值之间的比较现在要改成有专门的比较数据大小的函数字符strcmp 2. 交换位置原来int直接就可以交换数据现在强制类型转换成char*后单位转换的变少了则需要循环4次才够int 四个字节 3. 指针加1 原来有确定类型现在是void* 原来加1现在就应该加size int cmp_int(const void* a, const void* b) {return *(int*)a - *(int*)b; }/*返回值基准数最后的下标参数需要分区的部分从头到尾开始排 */ int partition(void* arr, int start, int end, size_t size) {int len end - start;char* ppivot ((char*)arr start * size);char* s ppivot size;while (len--){if ((*cmp_int)(ppivot, s) 0){for (int i 0; i size; i){int temp *(si);*(si) *(ppivot size i);*(ppivot size i) *(ppivoti);*(ppivoti) temp;}ppivot size;}s size;}return (int)((ppivot - (char*)arr) / size); }/*返回值arr首元素的地址参数需要排序的部分从头到尾 */void* quick_sort(void* arr, int start, int end,size_t size) {assert(arr);if (end start){int pivot partition(arr, start, end,size);quick_sort(arr, start, pivot - 1,size);quick_sort(arr, pivot 1, end,size);}return arr; }void* my_qsort(void* arr, size_t len, size_t size, int (*cmp_int)(const void* a, const void* b)) {assert(arr);int start 0;int end (int)len - 1;quick_sort(arr, start, end, size);return arr; } 感谢各位大佬的支持与指正
http://www.hkea.cn/news/14382502/

相关文章:

  • 做网站公司多少钱如何通过psd做网站
  • 百度云服务器建设网站qq刷赞网站咋做
  • 个人可以做电商网站吗学做网站的学校
  • 设计一个自己的电商网站南京做网站哪家公司好
  • 中国古风网站模板抽奖页面设计模板
  • 河南航天建设工程有限公司网站wordpress怎样批量修改时间
  • 网络文学网站开发WordPress输出当前网址
  • php户外运动产品企业网站源码微信有网站开发吗
  • 室内环保网站模板代码中小企业平台
  • 长沙微信网站建设西安关键词排名首页
  • 优惠建网站用织梦怎么做网站
  • 德阳网站怎么做seo网站右下角代码
  • 东莞厚街做网站惠州外发加工网
  • 王烨辉wp建站优化
  • 免费网站后台模板创造网址
  • 网站开发研究方法呼市地区做网站公司
  • 那里有做网站如何弄小程序
  • 营销外包网站秀主题wordpress
  • 基金网站建设黄埔网站建设价格
  • 比较好的做外贸网站智慧社区背景图
  • 网站怎么赚钱的太平洋在线企业建站系统
  • 如何查询一个网站的空间博客网站
  • wordpress图片添加标签南宁网络优化seo费用
  • 怎么搜索整个网站移动端网站建设 新闻动态
  • 天津建设招聘信息网站wordpress主题如何
  • 社交网站用户体验加拿大购物网站排名
  • 东莞樟木头网站建设前端开发培训多少钱啊
  • 织梦网站主页代码在后台怎么改阿里云网站建设流程
  • 专业购物网站建设番禺网站制作
  • 网站首页模版网页制作作业代码