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

西安网站群建设长沙人才招聘网官网

西安网站群建设,长沙人才招聘网官网,做网站的一般多少钱,怎么建立简单网站#x1f525;博客主页#xff1a;小王又困了 #x1f4da;系列专栏#xff1a;数据结构 #x1f31f;人之为学#xff0c;不日近则日退 ❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ 目录 一、排序的概念及其分类 #x1f4d2;1.1排序的概念 #x1f4d2;1.2排序… 博客主页小王又困了 系列专栏数据结构 人之为学不日近则日退 ❤️感谢大家点赞收藏⭐评论✍️ 目录 一、排序的概念及其分类 1.1排序的概念 1.2排序的分类 二、插入排序 2.1直接插入排序 2.1.1直接插入排序的思想 2.1.2排序步骤  2.1.3代码实现  2.1.4直接插入排序的特点 2.2希尔排序 2.2.1希尔排序法的基本思想 2.2.2排序步骤  2.2.3代码实现  2.2.4希尔排序的特点 三、选择排序 3.1直接选择排序 3.1.1直接选择排序的思想 3.1.2排序步骤  3.1.3代码实现 3.1.4直接选择排序的特点 3.2堆排序 3.2.1堆排序的思想 3.2.2排序步骤 3.2.3代码实现 3.2.4堆排序的特点 ️前言 排序是我们数据结构学习中很重要的章节我们在生活中买东西都会挑选更好的点外卖会选评分高的等等这些都需要用到排序。接下来我们将会学习常见的排序算法。 一、排序的概念及其分类 1.1排序的概念 排序所谓排序就是使一串记录按照其中的某个或某些关键字的大小递增或递减的排列起来的操作。 稳定性假定在待排序的记录序列中存在多个具有相同的关键字的记录若经过排序这些记录的相对次 序保持不变即在原序列中r[i]r[j]且r[i]在r[j]之前而在排序后的序列中r[i]仍在r[j]之前则称这种排 序算法是稳定的否则称为不稳定的。 内部排序数据元素全部放在内存中的排序。 外部排序数据元素太多不能同时放在内存中根据排序过程的要求不能在内外存之间移动数据的排序。 1.2排序的分类 二、插入排序 2.1直接插入排序 2.1.1直接插入排序的思想 把待排序的数据按其关键码值的大小逐个插入到一个已经排好序的有序序列中直到所有的数据插入完为止得到一个新的有序序列 。 实际中我们玩扑克牌时就用了插入排序的思想。 注意数组中除了第一个元素默认有序其余所有元素都看作待插入数据。  2.1.2排序步骤  将有序数据的最后一个元素的下标记为 end则第一个待插入元素的下标为 end1记作 tmp将 tmp 与有序数据从后向前依次比较如果 tmp a[end]就将 a[end] 向后移动end--再去找下一位进行比较直到 tmp  a[end] 或者 end 0将 tmp 插入到 end1 的位置重复步骤就可以实现排序 2.1.3代码实现  void InsertSort(int* a, int n) {for (int i 0; i n - 1; i){int end i;int tmp a[end 1];while (end 0){if (tmp a[end]){a[end 1] a[end];}else{break;}--end;}a[end 1] tmp;} } 2.1.4直接插入排序的特点 元素集合越接近有序直接插入排序算法的时间效率越高时间复杂度O(N^2)空间复杂度O(1)它是一种稳定的排序算法稳定性稳定 2.2希尔排序 2.2.1希尔排序法的基本思想 先选定一个整数把待排序文件中所有记录分成个组所有距离为3的数据分在同一组内并对每一组内的数据进行排序。然后重复上述分组和排序的工作。当距离1时所有数据在统一组内排好序。 希尔排序分为两步 预排序直接插入排序 当元素集合越接近有序直接插入排序的效率很高希尔排序就是通过预排序使元素集合接近有序再进行直接插入排序这样大大提高了效率。 2.2.2排序步骤  选取一个合适的 gap 作为间距将间距为 gap 的数据分为一组分成 gap 组每一组数据都进行直接插入排序使数据接近有序不断缩小间距当 gap1 时数据进行直接插入排序实现排序 2.2.3代码实现  void ShellSort(int* a, int n) {int gap n;while (gap 1){gap gap / 3 1;for (int i 0; i n - gap; i){int end i;int tmp a[end gap];while (end 0){if (tmp a[end]){a[end gap] a[end];end - gap;}else{break;}}a[end gap] tmp;}} } 将 igap 改为 i 将分组排序变为多组并排减少了循环。 gap gap / 3 1 的目的是保证 gap 最后的值为1. 2.2.4希尔排序的特点 希尔排序是对直接插入排序的优化。当gap 1时都是预排序目的是让数组更接近于有序。当gap 1时数组已经接近有序的了这样就会很快。这样整体而言可以达到优化的效果。希尔排序的时间复杂度不好计算因为gap的取值方法很多导致很难去计算。空间复杂度O(1)稳定性不稳定 三、选择排序 3.1直接选择排序 3.1.1直接选择排序的思想 每一次从待排序的数据元素中选出最小或最大的一个元素存放在序列的起始位置直到全部待排序的数据元素排完 。 3.1.2排序步骤  先遍历一遍数组找到最大的数和最小的数记住它们的下标将最小的数交换到数组的左边最大的数交换到数组的右边beginend--重复上述步骤即可实现排序 3.1.3代码实现 void SelectSort(int* a, int n) {int begin 0, end n - 1;while (begin end){int min begin, max begin;for (int i begin 1; i end; i){if (a[min] a[i]){min i;}if (a[max] a[i]){max i;}}Swap(a[min], a[begin]);if (max begin){max min;}Swap(a[max], a[end]);begin;end--;} } 我们要注意当 a[max] 在数组元素的第一个进行 Swap(a[min], a[begin]) 后最大的元素的位置就发生了改变要及时修改 max。 3.1.4直接选择排序的特点 直接选择排序思考非常好理解但是效率不是很好。实际中很少使用时间复杂度O(N^2)空间复杂度O(1)稳定性不稳定 3.2堆排序 3.2.1堆排序的思想 堆排序(Heapsort)是指利用堆积树堆这种数据结构所设计的一种排序算法它是选择排序的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆排降序建小堆。 3.2.2排序步骤 将待排序的数据构造成一个大堆当前堆的根节点堆顶就是该组数组中最大的元素将堆顶元素和最后一个元素交换将剩下的节点重新构造成一个大堆重复步骤2每次循环构建都能找到当前堆中的最大值并通过交换的方式把它放到该大堆的尾部直至所有元素全部有序 3.2.3代码实现 void HeapSort(int* a, int n) {//第一步建大堆for (int i (n - 1 - 1) / 2; i 0; i--){AdjustDown(a, n, i);}//第二步堆删除思想进行排序依次选数调堆for (int i n - 1; i 0; i--){Swap(a[0], a[i]);AdjustDown(a, i , 0);} }​ 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 parent * 2 1;}else{break;}} }3.2.4堆排序的特点 堆排序使用堆来选数效率就高了很多。时间复杂度O(N*logN)空间复杂度O(1)稳定性不稳定 本次的内容到这里就结束啦。希望大家阅读完可以有所收获同时也感谢各位读者三连支持。文章有问题可以在评论区留言博主一定认真认真修改以后写出更好的文章。你们的支持就是博主最大的动力。
http://www.dnsts.com.cn/news/149486.html

相关文章:

  • 电子商务网站推广目的分为企业网站多大空间够用
  • 大连企业网站制作wordpress时间轴插件
  • 深圳做网站公司有哪些公司杭州网页设计公司招聘
  • 做网站英文怎么说wordpress 支付宝 微信
  • 做网站建设注册商标是多少类网站如何做点击链接地址
  • 基于html5的旅游网站的设计网页设计代码动漫
  • 做网站有名的公司有哪些网站在建设中模板下载
  • 小九自助建站南昌集团制作网站开发
  • 找网络公司做的网站可以出售吗项目宣传网站模板免费下载
  • 网站建设毕业答辩ppt怎么写wordpress 获取当前id
  • 百度蜘蛛开发网站中国经济网
  • 手机微信官方网站阿里巴巴logo生成器
  • 自己怎么做拼单网站网站流量统计分析报告
  • 厦门网站建设工作东营微信网站制作
  • 网站排名logo怎么做wordpress悬浮刷新按钮
  • WordPress如何建立手机网站服务器租用哪家好而且便宜
  • 佛山网站制作的公司做网站的价钱
  • 银川住房和城乡建设厅网站模仿网站怎么做
  • .net网站开发架构wordpress 中文名注册
  • 用vue框架做的pc端网站dedecms 子网站
  • 用别人服务器做网站网站建设方案和报价表
  • 创建网站怎么收费大兴快速网站建设公司
  • 网站交互方式望野原文
  • 企业网站建设对网络营销的影响主要表现在( )搭建房子流程
  • 成都网站制作成都seo排名课程咨询电话
  • 营销型网站建设设计服务网站后台怎么做超链接
  • 书籍教你如何做网站外贸相关岗位人才招聘启事
  • 可以免费做试卷题目的网站怎么提高自己网站的知名度
  • 深圳做小程序网站设计武穴建设网站
  • 深圳住房和建设局网站 宝安wordpress的结构