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

网站服务器转移视频吗网页程序开发学什么语言

网站服务器转移视频吗,网页程序开发学什么语言,关于旅游网站开发的研究方法,网站建设太金手指六六三十目录 前言 一、基本原理 1.算法步骤 2.动画演示 3.插入排序的实现代码 二、插入排序的时间复杂度 1. 时间复杂度 1.最优时间复杂度 2.最差时间复杂度 3.平均时间复杂度 2. 空间复杂度 三、插入排序的优缺点 1.优点 2.缺点 四、插入排序的改进与变种 五、插入排… 目录 前言 一、基本原理 1.算法步骤 2.动画演示 3.插入排序的实现代码 二、插入排序的时间复杂度 1. 时间复杂度 1.最优时间复杂度 2.最差时间复杂度 3.平均时间复杂度 2. 空间复杂度 三、插入排序的优缺点 1.优点 2.缺点 四、插入排序的改进与变种 五、插入排序的应用场景 六、总结 前言 插入排序Insertion Sort是一种简单且直观的排序算法常用于小规模数据的排序或作为其他复杂排序算法的一部分如快速排序的小数组优化。 本文将详细介绍插入排序的基本原理、实现代码、时间复杂度及其适用场景帮助你轻松掌握这一算法。 一、基本原理 插入排序的核心思想是将数组分为已排序部分和未排序部分。通过逐一从未排序部分取出元素将其插入到已排序部分的合适位置最终完成排序。 1.算法步骤 1. 从数组的第二个元素开始视为当前需要插入的元素。 2. 从已排序部分的最后一个元素开始比较如果当前元素较小则将已排序部分元素向右移动。 3. 重复上述步骤直到找到插入位置将当前元素插入。 4. 对剩余的未排序部分重复以上步骤直至整个数组有序。 2.动画演示 这里我写了一个程序用来演示直接插入算法的过程。 假如我要进行排序的数据元素分别为53, 862741。 初始的时候我们已排序中的部分中的数据元素使用绿色表示未排序的使用蓝色表示。 图1.初始状态 初始状态下我们把第一个数据元素看做一个已经排列好的部分。 同时把第二个数据元素作为下次要插入的数据元素。 图2.插入排序的动画演示 我们以上面的数组为例看一下具体的过程 53, 862741 1.第一轮 首先确定5是已经排列好的我们将3进行插入操作。将3插入到仅有一个数据元素为5的数组中显然5比3大我们将3插入到5的前面。至此第一轮插入结束。此时的数组为{3,5,8,6,2,7,4,1}。 2.第二轮 在上一轮中已排序的区间为{3,5},现在我们将8拿出来和前面排列好的部分进行比较。因为58,依次已排序区间应该为{3,5,8}。第二轮结束此时排序依然是{3,5,8,6,2,7,4,1}。 2.第二轮 在上一轮中已排序的区间为{3,5},现在我们将8拿出来和前面排列好的部分进行比较。因为58,依次已排序区间应该为{3,5,8}。第二轮结束此时排序依然是{3,5,8,6,2,7,4,1}。 3.第三轮 在上一轮中已排序的区间为{3,5,8},现在我们将6拿出来和前面排列好的部分进行比较。因为86,我们在把6和前面的一个数据元素5比较56把6查到5后面,依次已排序区间应该为{3,5,68}。第二轮结束此时排序依是{3,5,6,8,2,7,4,1}。 4.第四轮 在上一轮中已排序的区间为{3,5,6,8},现在我们将2拿出来和前面排列好的部分进行比较。具体的比较过程和上一轮相同这里不重复了此时排序是{2,3,5,6,8,7,4,1}。 5.第五轮 在上一轮中已排序的区间为{2,3,5,6,8},现在我们将7拿出来和前面排列好的部分进行比较。具体的比较过程和上一轮相同这里不重复了此时排序是{2,3,5,6,7,8,4,1}。 3.第六轮 在上一轮中已排序的区间为{2,3,5,6,7,8},现在我们将4拿出来和前面排列好的部分进行比较。具体的比较过程和上一轮相同这里不重复了此时排序是{2,3,4,5,6,7,8,1}。 3.第三轮 在上一轮中已排序的区间为{2,3,4,5,6,7,8},现在我们将1拿出来和前面排列好的部分进行比较。具体的比较过程和上一轮相同这里不重复了此时排序是{1,2,3,4,5,6,7,8} 3.插入排序的实现代码 以下是插入排序的 C语言实现 #include stdio.h // 插入排序函数 void insertionSort(int arr[], int n) {for (int i 1; i n; i) {int key arr[i]; // 当前要插入的元素int j i - 1;// 将比 key 大的元素向右移动while (j 0 arr[j] key) {arr[j 1] arr[j];j--;}// 插入 key 到正确的位置arr[j 1] key;// 打印当前排序步骤printf(第 %d 步: , i);for (int k 0; k n; k) {printf(%d , arr[k]);}printf(\n);} } int main(int argc, const char * argv[]) {int arr[] {5, 3, 8, 6, 2, 7, 4, 1};int n sizeof(arr) / sizeof(arr[0]);printf(原始数组: );for (int i 0; i n; i) {printf(%d , arr[i]);}printf(\n);// 执行插入排序insertionSort(arr, n);// 打印排序后的数组printf(排序后数组: );for (int i 0; i n; i) {printf(%d , arr[i]);}printf(\n);return 0; } 二、插入排序的时间复杂度 1. 时间复杂度 1.最优时间复杂度 当数组已经有序时每次插入只需比较一次无需移动元素。 2.最差时间复杂度 当数组为逆序时每次插入都需要将所有已排序部分元素向右移动。 3.平均时间复杂度 一般情况下插入排序的性能表现介于最佳和最差之间。 2. 空间复杂度 插入排序是原地排序算法只需常数级别的额外空间空间复杂度为O(1) 。 三、插入排序的优缺点 1.优点 1. 简单直观算法易于理解和实现。 2. 适合小数据集对于小规模数据排序性能较好。 3. 稳定性插入排序是稳定排序算法不会改变相同元素的相对位置。 4. 局部有序优化当数据部分有序时插入排序的性能非常接近线性时间。 2.缺点 1. 效率低下对于大规模数据插入排序的性能较差时间复杂度较高。 2. 多次元素移动在数组为逆序的情况下插入排序需要频繁移动元素效率较低。 四、插入排序的改进与变种 1. 二分插入排序 • 改进点在插入时通过二分查找定位插入位置从而减少比较次数。 • 时间复杂度虽然查找位置优化为 但元素移动次数仍为 。 2. 希尔排序Shell Sort • 基于插入排序的改进版通过引入增量分组的思想对远距离元素进行预排序逐步缩小分组间隔最终变为插入排序。 • 时间复杂度最优可达 。 五、插入排序的应用场景 1. 小规模数据排序在数据量较小时插入排序简单易用且性能尚可。 2. 近乎有序数据插入排序在处理已部分有序的数据时表现优异。 3. 作为复杂排序的辅助算法如快速排序或希尔排序中用插入排序优化小数组的排序效率。 六、总结 插入排序是一种经典的排序算法以其简单性和直观性被广泛应用于教学和小规模排序场景中。虽然它在大数据排序上的性能较差但通过改进如二分插入排序或结合其他算法如希尔排序可以显著提升效率。
http://www.hkea.cn/news/14263632/

相关文章:

  • 备案网站公共查询系统大连html5网站建设费用
  • 石家庄网站制作软件开源门户系统
  • 网站要能被搜到需要做推广嘛王也高清壁纸图片
  • 宿迁做网站企业在线查询
  • dz做网站缺点杭州仪器网站制作
  • 设计师a 网站上海公司名字大全
  • 杭州网站建设哪家权威域名邮箱登录入口
  • 网站标题关键优化网站建设要做哪些
  • 沈阳网站营销电话销售网站建设多少钱一个月
  • 淄博网站建设培训wordpress短代码插件TD
  • 重庆实惠网站建设护肤品 网站建设策划书
  • 长沙做网站最好的公司有哪些广告制作方案
  • 长春网站设计团队魔方优化大师官网下载
  • 保定专业网站建设wordpress更改域名修改站内链接
  • 网站建设制作怎么弄崇文网站建设
  • 小鱼在线网站建设媒体门户网站建设方案
  • 有没有帮人做机械设计的网站徐州旅游的网站建设
  • 成都学网站建设费用电子商务电商网站饿建设
  • 如何申请免费域名做网站wordpress上传数据库
  • wordpress做社交网站设计深圳网站制作
  • 网站安全性要求记录开发wordpress主题
  • 旅游网站模板html免费下载网站建设 虚拟化
  • 中国商标网官方查询网站陕西省建设厅便民服务网站
  • 机械网站建设开发做产品表情的网站
  • 网站与app的本质区别昆明网站建设那家好
  • 做网站的费用会计分录wordpress 有点慢
  • 上海网站建设seo公司哪家好电子商务网站网站建设
  • 十堰建设局网站wordpress邮箱发文
  • 建设模板网站报价营销网站报备
  • 用vs2008做网站做网站如何获得阿里巴巴投资