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

为什么要进行网站备案有限责任公司公司章程范本

为什么要进行网站备案,有限责任公司公司章程范本,win7卸载电脑上的wordpress,比较好的网站开发公司C语言实现堆排序&#xff08;Heap Sort&#xff09; 1. 代码实现 下面是 C语言实现的堆排序接口&#xff0c;支持 通用数据类型排序&#xff0c;并采用 函数指针 进行 自定义比较&#xff0c;适用于 整数排序 或 结构体排序。 完整代码 大根堆 #include <stdio.h> #…

C语言实现堆排序(Heap Sort)

1. 代码实现

下面是 C语言实现的堆排序接口,支持 通用数据类型排序,并采用 函数指针 进行 自定义比较,适用于 整数排序结构体排序

完整代码

大根堆

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/* 比较函数指针,返回值 >0 表示 a > b,=0 表示相等,<0 表示 a < b */
typedef int (*compare_func)(const void *, const void *);/* 交换函数 */
static void swap(void *a, void *b, size_t size) {void *temp = malloc(size);if (temp) {memcpy(temp, a, size);memcpy(a, b, size);memcpy(b, temp, size);free(temp);}
}/* 调整堆,保持最大堆性质 */
static void heapify(void *base, size_t nmemb, size_t size, size_t root, compare_func cmp) {size_t largest = root;size_t left = 2 * root + 1;size_t right = 2 * root + 2;char *arr = (char *)base;if (left < nmemb && cmp(arr + left * size, arr + largest * size) > 0) {largest = left;}if (right < nmemb && cmp(arr + right * size, arr + largest * size) > 0) {largest = right;}if (largest != root) {swap(arr + root * size, arr + largest * size, size);heapify(base, nmemb, size, largest, cmp);}
}/* 建立最大堆 */
static void build_heap(void *base, size_t nmemb, size_t size, compare_func cmp) {for (ssize_t i = (nmemb / 2) - 1; i >= 0; i--) {heapify(base, nmemb, size, i, cmp);}
}/* 堆排序 */
void heap_sort(void *base, size_t nmemb, size_t size, compare_func cmp) {if (!base || nmemb < 2 || !cmp) return;build_heap(base, nmemb, size, cmp);char *arr = (char *)base;for (size_t i = nmemb - 1; i > 0; i--) {swap(arr, arr + i * size, size);heapify(base, i, size, 0, cmp);}
}/* 整数比较函数 */
int int_compare(const void *a, const void *b) {return (*(int *)a - *(int *)b);
}/* 测试代码 */
int main() {int arr[] = {12, 11, 13, 5, 6, 7};size_t n = sizeof(arr) / sizeof(arr[0]);printf("原始数组: ");for (size_t i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");heap_sort(arr, n, sizeof(int), int_compare);printf("排序后数组: ");for (size_t i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}

小根堆

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/* 比较函数指针,返回值 >0 表示 a > b,=0 表示相等,<0 表示 a < b */
typedef int (*compare_func)(const void *, const void *);/* 交换函数 */
static void swap(void *a, void *b, size_t size) {void *temp = malloc(size);if (temp) {memcpy(temp, a, size);memcpy(a, b, size);memcpy(b, temp, size);free(temp);}
}/* 调整堆,保持小根堆性质 */
static void min_heapify(void *base, size_t nmemb, size_t size, size_t root, compare_func cmp) {size_t smallest = root;size_t left = 2 * root + 1;size_t right = 2 * root + 2;char *arr = (char *)base;if (left < nmemb && cmp(arr + left * size, arr + smallest * size) < 0) {smallest = left;}if (right < nmemb && cmp(arr + right * size, arr + smallest * size) < 0) {smallest = right;}if (smallest != root) {swap(arr + root * size, arr + smallest * size, size);min_heapify(base, nmemb, size, smallest, cmp);}
}/* 建立小根堆 */
static void build_min_heap(void *base, size_t nmemb, size_t size, compare_func cmp) {for (ssize_t i = (nmemb / 2) - 1; i >= 0; i--) {min_heapify(base, nmemb, size, i, cmp);}
}/* 小根堆排序 */
void min_heap_sort(void *base, size_t nmemb, size_t size, compare_func cmp) {if (!base || nmemb < 2 || !cmp) return;build_min_heap(base, nmemb, size, cmp);char *arr = (char *)base;for (size_t i = nmemb - 1; i > 0; i--) {swap(arr, arr + i * size, size);min_heapify(base, i, size, 0, cmp);}
}/* 整数比较函数(小根堆适用) */
int int_compare_min(const void *a, const void *b) {return (*(int *)a - *(int *)b);
}/* 测试代码 */
int main() {int arr[] = {12, 11, 13, 5, 6, 7};size_t n = sizeof(arr) / sizeof(arr[0]);printf("原始数组: ");for (size_t i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");min_heap_sort(arr, n, sizeof(int), int_compare_min);printf("小根堆排序后数组: ");for (size_t i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}
http://www.yayakq.cn/news/644069/

相关文章:

  • 学校网站建设必要性建站时网站地图怎么做
  • 做外贸网站怎么做房地产新闻时事热点
  • 响应式企业网站制作公司深圳seo推广外包
  • 网站的网络公司企业网站建立费用 作什么科目
  • 西安网站托管排名中国兰州网兰州频道
  • 专业网站建设加工网站怎么做付费项目
  • 一个网站怎样做两个后台网页设计代码模板在哪找
  • 网络营销网站建设与策划分析wordpress页面分类插件
  • 嘉兴专业定制网站制作企业网站目录文件查看
  • 做网站用jquery入门编程软件
  • lamp网站开发架构经验装修设计合同范本
  • 北海手机网站制作网站做效果联系方式
  • 如何制作产品网站安徽安庆旅游必去十大景点
  • 菏泽做网站电话企业建设网站的目的是什么
  • 北京网站开发专员城乡建设局和住监局官网
  • 制作网站要步骤网站开发调研问卷
  • 做网站坂田wordpress template name
  • 什么颜色做网站好看_网站建设网站
  • 企业网站建立哪网页游戏制作工具
  • 中国建设人才网证书查询系统官网seo如何快速排名
  • 广东网站建设包括什么软件凡科互动小程序怎么解封
  • 义乌网站建设多少钱用asp.net做的购物网站
  • 网站开发的过程中遇到的难题昆明网络营销网站
  • 免费做网站哪家好企业信用信息公开网查询系统
  • 千城网站建设定制制作网站开发
  • 模板网站的弊端在哪制作个简单公司网站要多少钱
  • 网站建设著作权seo报告
  • 微信网站登录网站如何建设与优化
  • 早晨网站建设合肥网页制作培训
  • 常用的网站类型有哪些类型有哪些北京有哪些不错的互联网公司