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

宝塔服务器搭建网站教程生态旅游网站的建设的内容

宝塔服务器搭建网站教程,生态旅游网站的建设的内容,网站源码修复,企业如何应用网站的堆的实现与堆排序及TopK问题的C语言代码 下面是详细的堆实现#xff0c;包括向上调整、向下调整算法#xff0c;以及堆排序和解决TopK问题的完整C语言示例代码。 1. 堆的实现 首先#xff0c;定义堆的数据结构#xff1a; #include stdio.h #include stdli…堆的实现与堆排序及TopK问题的C语言代码 下面是详细的堆实现包括向上调整、向下调整算法以及堆排序和解决TopK问题的完整C语言示例代码。 1. 堆的实现 首先定义堆的数据结构 #include stdio.h #include stdlib.h#define MAX_HEAP_SIZE 100typedef struct {int data[MAX_HEAP_SIZE];int size; } Heap;Heap* createHeap() {Heap* heap (Heap*)malloc(sizeof(Heap));heap-size 0;return heap; }2. 向上调整算法 void heapifyUp(Heap* heap, int index) {int parentIndex (index - 1) / 2;if (index 0 heap-data[index] heap-data[parentIndex]) {// 交换当前节点和父节点int temp heap-data[index];heap-data[index] heap-data[parentIndex];heap-data[parentIndex] temp;// 递归向上调整heapifyUp(heap, parentIndex);} }3. 向下调整算法 void heapifyDown(Heap* heap, int index) {int largest index;int leftChild 2 * index 1;int rightChild 2 * index 2;if (leftChild heap-size heap-data[leftChild] heap-data[largest]) {largest leftChild;}if (rightChild heap-size heap-data[rightChild] heap-data[largest]) {largest rightChild;}if (largest ! index) {// 交换当前节点和最大子节点int temp heap-data[index];heap-data[index] heap-data[largest];heap-data[largest] temp;// 递归向下调整heapifyDown(heap, largest);} }4. 插入元素到堆 void insertHeap(Heap* heap, int value) {if (heap-size MAX_HEAP_SIZE) {printf(Heap is full!\n);return;}heap-data[heap-size] value;heap-size;heapifyUp(heap, heap-size - 1); }5. 删除堆顶元素 int extractMax(Heap* heap) {if (heap-size 0) {printf(Heap is empty!\n);return -1;}int maxValue heap-data[0];heap-data[0] heap-data[heap-size - 1];heap-size--;heapifyDown(heap, 0);return maxValue; }6. 堆排序 void heapSort(int* array, int length) {Heap* heap createHeap();for (int i 0; i length; i) {insertHeap(heap, array[i]);}for (int i length - 1; i 0; i--) {array[i] extractMax(heap);}free(heap); }7. TopK问题 解决TopK问题即找出数据流中前K大的元素可以使用一个最小堆来实现。 void topK(int* array, int length, int k) {if (k 0 || k length) {printf(Invalid value of K!\n);return;}Heap* heap createHeap();for (int i 0; i k; i) {insertHeap(heap, array[i]);}for (int i k; i length; i) {if (array[i] heap-data[0]) {heap-data[0] array[i];heapifyDown(heap, 0);}}printf(Top %d elements: , k);for (int i 0; i k; i) {printf(%d , extractMax(heap));}printf(\n);free(heap); }8. 测试代码 int main() {int array[] {3, 2, 1, 5, 6, 4};int length sizeof(array) / sizeof(array[0]);// 测试堆排序heapSort(array, length);printf(Sorted array: );for (int i 0; i length; i) {printf(%d , array[i]);}printf(\n);// 测试TopK问题int k 3;int array2[] {3, 2, 1, 5, 6, 4};length sizeof(array2) / sizeof(array2[0]);topK(array2, length, k);return 0; }解释 堆的实现使用数组和一个结构体来表示堆包含堆的数据和大小。向上调整算法在插入新元素后通过比较当前节点和父节点的值来调整堆确保堆的性质。向下调整算法在删除堆顶元素后通过比较当前节点和子节点的值来调整堆确保堆的性质。堆排序利用堆的插入和删除操作将数组中的元素排序。TopK问题使用最小堆找出数据流中前K大的元素。 通过这些步骤和代码实现可以高效地进行堆操作、堆排序以及解决TopK问题。
http://www.tj-hxxt.cn/news/138054.html

相关文章:

  • 专业电商网站建设哪家好找培训班一般在什么平台
  • 大连网站建设方法一个云主机 多个网站
  • 定制开发电商网站建设代理记账如何获取客户
  • 做网站的收获及感想深圳福田中学
  • 网站制作培训多少钱泰安网站建设总结
  • 高端html5网站建设辽宁省住房和城乡建设厅
  • 江苏省两学一做网站next wordpress
  • 惠州市建设厅网站邓州建网站
  • 公司 网站源码易班班级网站建设展示PPT
  • 绵阳市中医医院网站建设seo网站优化服务合同
  • 具有品牌的微网站建设北京网站建设价格天
  • 大尺度做爰网站在线房地产销售赚钱吗
  • 寻找集团网站建设海外服务器哪家好
  • 企业门户网站开发平台的设计app制作软件手机版免费下载
  • 那个网站ppt做的比较好网站建设优化解析
  • 烟台互网站建设公司名单做网站需要买服务器么
  • 做食品网站的素材怎么做网站卖货
  • 关于做摄影网站济宁住房和城乡建设局网站首页
  • 杭州seo网站优化买房子怎么找房源
  • 淘宝刷单网站怎么建设源代码seo关键词如何布局
  • 电子商务网站规划的流程筑招建筑人才网长春安全员
  • 网站建设氺金手指排名15定制开发app价格
  • 解决wordpress更改新域名后网站不能访问的问题做游戏网站用什么系统做
  • 网站设计前沿网站代理网站地址
  • 正在建设中网站自己做头像的软件
  • 做商铺最好的网站小程序商城模板下载
  • 免费网站后台网站建设平台哪家好
  • 网站 空间表格做的网站影响收录
  • 收录快的网站wordpress 系统安装
  • 安卓手机做网站服务器上海热点新闻