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

服装印花图案网站男人网址你懂我意思正能量

服装印花图案网站,男人网址你懂我意思正能量,企业信息化管理平台,栅格系统做的网站堆排序即利用堆的思想来进行排序#xff0c;总共分为两个步骤#xff1a; 1. 建堆 升序#xff1a;建大堆 降序#xff1a;建小堆 原因分析#xff1a; 若升序建小堆时间复杂度是O(N^2) 升序建大堆#xff0c;时间复杂度O#xff08;N*logN#xff09; 所以升序建大堆…堆排序即利用堆的思想来进行排序总共分为两个步骤 1. 建堆 升序建大堆 降序建小堆 原因分析 若升序建小堆时间复杂度是O(N^2) 升序建大堆时间复杂度ON*logN 所以升序建大堆降序建小堆 2. 利用堆删除思想来进行排序 建堆和堆删除中都用到了向下调整因此掌握了向下调整就可以完成堆排序。 代码实现 #includestdio.h//交换函数 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp; } //向下调整算法 void AdjustDown(int* a, int n, int parent) {int child parent * 2 1;while (child n){if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child child * 2 1;}else{break;}} } void HeapSort(int* a, int n) {//建堆for (int i (n - 1 - 1) / 2; i 0; i--){AdjustDown(a, n, i);}int end n - 1;while (end 0){Swap(a[0], a[end]);AdjustDown(a, end, 0);end--;} } int main() {int a[] { 0,4,3,6,7,8,1 };HeapSort(a, sizeof(a) / sizeof(int));return 0; } 运行结果 若是建小堆则只需要把向下调整中的改成,修改后如下 if (child 1 n a[child 1] a[child]) {child; } if (a[child] a[parent]) {Swap(a[child], a[parent]);parent child;child child * 2 1; } 运行结果 当然我们也可以先写一个堆的数据结构再进行堆排序但是这显然不如上面的快速且节省空间 自主实现数据结构堆再进行堆排序 代码实现 #pragma once #includestdio.h #includestdlib.h #includestdbool.h #includeassert.h #includestring.htypedef int HPDataType; typedef struct Heap {HPDataType* a;int size;int capacity; }HP; //初始化 void HPArrayInit(HP* hp, HPDataType* a, int n); //销毁 void HPDestroy(HP* hp); // 堆的插入 void HPPush(HP* hp, HPDataType x); // 堆的删除 void HPPop(HP* hp); // 取堆顶的数据 HPDataType HPTop(HP* hp); // 堆的数据个数 int HPSize(HP* hp); // 堆的判空 int HPEmpty(HP* hp); //向上调整算法 void Adjustup(HPDataType* a, int child); //向下调整算法 void AdjustDown(HPDataType* a, int n, int parent);void HPArrayInit(HP* hp, HPDataType* a, int n) {assert(hp);hp-a (HPDataType*)malloc(sizeof(HPDataType) * n);if (hp-a NULL){perror(malloc fail);return;}memcpy(hp-a, a, n * sizeof(HPDataType));hp-size hp-capacity n;//向上调整,建堆时间复杂度O(N*logN)for (int i 1; i hp-size; i){Adjustup(hp-a, i);}//向下调整建堆时间复杂度O(N)for (int i (hp-size - 1 - 1) / 2; i 0; i--){AdjustDown(hp-a, hp-size, i);} } //销毁 void HPDestroy(HP* hp) {assert(hp);hp-size hp-capacity 0;free(hp-a);hp-a NULL; } //交换函数 void Swap(HPDataType* px, HPDataType* py) {HPDataType tmp;tmp *px;*px *py;*py tmp; } //向上调整算法 void Adjustup(HPDataType* a, int child) {int parent (child - 1) / 2;while (child 0){if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (parent - 1) / 2;//找原本父亲的父亲下标}else{break;}} } // 堆的插入 void HPPush(HP* hp, HPDataType x) {assert(hp);//扩容if (hp-size hp-capacity){int newcapacity hp-capacity 0 ? 4 : 2 * hp-capacity;HPDataType* tmp (HPDataType*)realloc(hp-a, sizeof(HPDataType) * newcapacity);if (tmp NULL){perror(realloc fail);return;}hp-a tmp;hp-capacity newcapacity;}hp-a[hp-size] x;Adjustup(hp-a, hp-size - 1); } //向下调整算法 void AdjustDown(HPDataType* a, int n, int parent) {int child parent * 2 1;while (child n){if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child child * 2 1;}else{break;}} } // 堆的删除 void HPPop(HP* hp) {assert(hp);assert(hp-size 0);Swap(hp-a[0], hp-a[hp-size - 1]);hp-size--;AdjustDown(hp-a, hp-size, 0); } // 取堆顶的数据 HPDataType HPTop(HP* hp) {assert(hp);return hp-a[0]; } // 堆的数据个数 int HPSize(HP* hp) {assert(hp);return hp-size; } // 堆的判空 int HPEmpty(HP* hp) {assert(hp);return hp-size 0; } void HeapSort(int* a, int n) {HP hp;HPArrayInit(hp, a, n);int i 0;while (!HPEmpty(hp)){a[i] HPTop(hp);//将堆顶数据放入数组中HPPop(hp);//再已放入数组中的堆顶数据删除}HPDestroy(hp); } int main() {int a[] { 60,70,65,50,32,100 };HeapSort(a, sizeof(a) / sizeof(int));for (int i 0; i sizeof(a) / sizeof(int); i){printf(%d , a[i]);}return 0; } 运行结果 欢迎各位大佬一起学习交流~
http://www.hkea.cn/news/14380106/

相关文章:

  • 浙江省建设协会网站首页网络营销咨询服务
  • 苏州集团网站建设网站开发子孙账号
  • 最好的书籍设计网站童装店网页设计素材
  • 网站建设知识库拼多多推广关键词首选帝搜软件
  • 海口专注海南网站建设上海网站建设 数字展厅
  • 注销网站备案申请表电商运营网
  • 企业网站开发开题报告自己怎么注册网站模板
  • 常州如何进行网站推广网页设计基础开题报告及网页流程图
  • 网站建设图标图片国际公司定义
  • 超八成搜索网站存在信息泄露问题什么是网络营销环境?
  • php网站开发程序编译软件电子商务网站帮助中心该怎么更好地设计
  • jsp网站开发软件哪个网可以网站备案
  • 怎样查看网站是用什么做的简单企业网站源码
  • 免费网站怎么建立响站怎么建设网站
  • 如何修改网站后台密码wordpress 文章标题
  • 徐州企业网站设计wordpress+整合js
  • 制作网站学什么专业公司网站建设都需要什么内容
  • ui设计师怎么做自己的网站建程网官网
  • 丽水网站建设公司公司网站的建设
  • 响应式网站的设计趋势wordpress 列表函数
  • 南阳公司网站制作网站建设的方法有
  • 抚顺您做煮火锅网站wordpress调用指定分类的文章
  • 网站设计报价怎么做wordpress创建搜索框
  • seo网站有优化培训吗wordpress爱客0.9
  • 安徽国贸网站建设做h5网站制作
  • php做网站浏览量赣州市人才网
  • 有那种网站么四面山网站建设
  • 网站界面(ui)设计形考任务1自己做的网站打开显示很慢
  • 做餐饮加盟的网站软件开发技术文档范文
  • 哈尔滨网站优化流程建设什么网站比较好