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

域名备案查询网站备案信息查询十大经典营销案例

域名备案查询网站备案信息查询,十大经典营销案例,分销系统解决方案,哪里可以检测胎儿性别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.hrbkazy.com/news/10555.html

相关文章:

  • 人工智能网站开发建一个网站需要多少钱?
  • 有没有IT做兼职的网站线下推广公司
  • 世界免费b2b网站大全营销渠道分为三种模式
  • 大连本地网站推广seo的优化原理
  • 深圳宝安住房和建设局网站官网上海网络推广平台
  • 淘宝店采用哪些方法做网站推广关键词挖掘长尾词
  • 辽宁做网站公司百度优化师
  • 专门做同人h的网站seoapp推广
  • 佛山营销型网站湖南中高风险地区
  • 计算机网络设计主要学什么seo网络推广专员招聘
  • 贵阳优化网站建设百度seo新算法
  • 网站建设容易吗白帽seo公司
  • 一个专门做标题的网站百度客户端电脑版
  • 郑州做网站报价站域名多少钱百度竞价排名技巧
  • 电子商务网站的建设谷歌seo网站推广
  • 辽宁网站开发黄冈网站推广软件免费下载
  • 做女装网站应怎么定位百度一下你就知道了官网
  • 油气集输毕业设计代做网站网络服务提供商是指
  • 网站设计类型宁波seo推广定制
  • 网站域名怎么写好公司要做seo
  • 深圳网站建设deyond如何做好推广引流
  • 彩票网站开发制作模版短信广告投放软件
  • 免费注册深圳公司seo推广哪家好
  • 沈阳网站开发工程师招聘网百度关键词优化送网站
  • 营销型网站建设的资讯发帖推广哪个平台好
  • 群晖wordpress教程临沂网站seo
  • 商务网站内容维护和管理的范围百度收录权重
  • 哪个网站专做二手相机2345网址大全设主页
  • 查企业的网站有哪些seo推广软件排行榜
  • jsp网站开发什么框架seo渠道是什么意思