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

山东高端网站建设附近计算机培训班咨询

山东高端网站建设,附近计算机培训班咨询,英文网站网站建设,wordpress主题去除授权#x1f4f7; 江池俊#xff1a; 个人主页 #x1f525;个人专栏#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 #x1f305; 有航道的人#xff0c;再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二… 江池俊 个人主页 个人专栏 ✅数据结构冒险记 ✅C语言进阶之路 有航道的人再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二、堆排序2.1 堆排序概念2.2 算法步骤 动图演示2.3 代码实现2.4 堆排序特性总结 一、选择排序 1.1 基本思想 每一次从待排序的数据元素中选出最小或最大的一个元素存放在序列的起始位置直到全部待排序的数据元素排完 。 1.2 算法步骤 动图演示 在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素若它不是这组元素中的最后一个(第一个)元素则将它与这组元素中的最后一个第一个元素交换在剩余的array[i]--array[n-2]array[i1]--array[n-1]集合中重复上述步骤直到集合剩余 1 个元素 1.3 代码实现 这里我们的代码可以稍作优化在每次选数的时候一次性选出最大和最小的 数然后依次与数组最后一个和第一个数进行交换。 void Swap(int* p1, int* p2) {int temp *p1;*p1 *p2;*p2 temp; }// 选择排序 // 时间复杂度O(N^2) // 最好的情况下O(N^2) void SelectSort(int* a, int n) {int begin 0;int end n - 1;while (begin end){int mini begin, maxi begin;for (int i 1; i end; i){if (a[i] a[mini]){mini i;}if (a[i] a[maxi]){maxi i;}}Swap(a[begin], a[mini]);if (maxi begin){maxi mini;}Swap(a[end], a[maxi]);begin;--end;} }1.4 选择排序特性总结 直接选择排序思考非常好理解但是效率不是很好。实际中很少使用时间复杂度O(N^2)空间复杂度O(1)稳定性不稳定 二、堆排序 堆排序传送门二叉树堆的应用实例分析堆排序 | TOP-K问题 虽然上面已经讲解过堆排序但在此我们最好还是继续回顾一下堆排序的算法思想。 2.1 堆排序概念 堆排序Heapsort是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构并同时满足堆积的性质即子结点的键值或索引总是小于或者大于它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法 大顶堆每个节点的值都大于或等于其子节点的值在堆排序算法中用于升序排列小顶堆每个节点的值都小于或等于其子节点的值在堆排序算法中用于降序排列 2.2 算法步骤 动图演示 创建一个堆 H[0……n-1]建议使用向下调整建堆把堆首最大值和堆尾互换把堆的尺寸缩小 1即确定最后一个数的位置并调用 向下调整算法目的是把新的数组顶端数据调整到相应位置重复步骤 2直到堆的尺寸为 1。 2.3 代码实现 以下代码以升序排序为例降序排序类似。 注意建堆时使用向下调整法要从倒数第一个非叶子节点即最后一个叶子节点的父节点开始。 // 向下调整 void AdjustDown(int* a, int size, int parent) {int child parent * 2 1;while (child size){// 假设左孩子小如果假设错了更新一下if (child 1 size a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }// 堆排序 --- 升序 void HeapSort(int* a, int n) {// O(N)// 建大堆for (int i (n - 1 - 1) / 2; i 0; i--){AdjustDown(a, n,i);}// O(N*logN)int end n - 1;while (end 0){Swap(a[0], a[end]);AdjustDown(a, end, 0);--end;} }2.4 堆排序特性总结 堆排序使用堆来选数效率就高了很多。时间复杂度O(N*logN)空间复杂度O(1)稳定性不稳定
http://www.tj-hxxt.cn/news/232640.html

相关文章:

  • 商城系统网站模板免费做字体的网站
  • 影院网站怎么做英文字母设计logo生成器
  • o2o商城上的二级网站毕业设计做网站哪种好
  • 网站百度搜索情况和反链接优化建议怎么做网站代销
  • jsp做网站实例教程品牌网站制作公司哪家好
  • 商务网站价格办公室设计图平面布置图
  • 问答推广秦皇岛优化网站排名
  • 搬瓦工做网站网站的结构与布局优化设计
  • 门户网站建设 请示网站添加什么东西才能和用户体验
  • 怎么看网站有没有备案苏州专业网站建设定制
  • 哪里有卖自己做的网站网站语言
  • 衡阳百度网站建设纸业建站服务
  • 龙泉市建设局网站深圳条幅制作
  • 云南建设注册考试中心网站厦门网站开发网络公司
  • 衡水企业网站建设公司wordpress运行
  • pc 手机网站 微站营销型网站建设是什么意思
  • 重庆网站制作服务阳江市网络问政
  • 利用第三方做网站永久发布地址跨境购网站建设
  • 珠海做网站wordpress教育类主题
  • 移动网站建设书籍推荐电子商务平台经营者所具备的功能
  • 企业网站建设制作设计哪家最专业小米官网页面
  • 网站的跳出率wordpress视屏
  • 网站设计简单吗网站建设方案平台
  • 如何在虚拟机中建设网站wordpress windows 伪静态
  • 昨天正常的网站突然显示建设中网站开发使用的工具
  • 建设部招标网 官方网站wordpress主题移动
  • 加强网站建设工作德州建设网站
  • 北京专业响应式网站建设怎么建设一个人自己网站
  • 腾讯云服务器搭建网站多少钱一个网站
  • 深圳网站建设开发哪家好免费制作视频的软件有哪些