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

有哪些营销型网站推荐百度客户端下载安装

有哪些营销型网站推荐,百度客户端下载安装,网站建设求职信,新邵县住房和城乡建设局网站文章目录 1. 希尔排序#xff08;Shellsort#xff09;1.1 简介1.2 希尔排序的步骤1.3 希尔排序的C实现1.4 时间复杂度1.5 空间复杂度1.6 希尔排序动画 1. 希尔排序#xff08;Shellsort#xff09; 1.1 简介 希尔排序#xff08;Shells Sort#xff09;#xff0c;又… 文章目录 1. 希尔排序Shellsort1.1 简介1.2 希尔排序的步骤1.3 希尔排序的C实现1.4 时间复杂度1.5 空间复杂度1.6 希尔排序动画 1. 希尔排序Shellsort 1.1 简介 希尔排序Shells Sort又称缩小增量排序Diminishing Increment Sort是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法其核心思想是通过逐渐减小元素之间的间隔使得序列在初始阶段就呈现局部有序从而减少插入排序的工作量。希尔排序的基本思想是将待排序的序列划分成若干个子序列分别进行插入排序。随着增量逐渐减少每组包含的关键词越来越多当增量减至1时整个序列恰被分成一组此时再对全体记录进行一次直接插入排序排序完成。 1.2 希尔排序的步骤 选择一个增量序列该序列通常是递减的正整数序列。常用的增量序列有希尔建议的序列、Hibbard序列、Sedgewick序列等。增量序列的选择会直接影响希尔排序的性能。使用选定的增量序列进行外层循环每次循环缩小增量。在每一轮外层循环中通过增量对元素进行分组每组包含相隔一定间隔的元素。这一步骤旨在逐步减小元素之间的间隔从而实现序列的局部有序。在每一组内通过插入排序对元素进行排序。这是希尔排序的关键步骤通过比较相隔增量的元素并在需要时交换它们的位置逐步实现每个小组的局部有序。重复外层循环和内层循环逐渐减小增量直到增量为1。最后一次外层循环使用增量为1相当于进行一次标准的插入排序。此时整个序列已经基本有序最终完成排序。 1.3 希尔排序的C实现 #include stdio.h// 希尔排序函数带步骤输出 void shellSort(int arr[], int n) {// 初始增量设置为数组长度的一半for (int gap n / 2; gap 0; gap / 2) {printf(当前间隔 (gap): %d\n, gap); // 输出当前的间隔// 对每个增量子数组进行插入排序for (int i gap; i n; i) {int temp arr[i];int j;printf( 当前插入元素 (arr[%d]): %d\n, i, temp);// 在增量子数组中向前移动元素直到找到合适的位置for (j i; j gap arr[j - gap] temp; j - gap) {printf( 比较并移动元素 (arr[%d] %d) 到位置 arr[%d]\n, j - gap, arr[j - gap], j);arr[j] arr[j - gap];}// 将当前元素放到合适的位置arr[j] temp;printf( 将元素 %d 插入到位置 arr[%d]\n, temp, j);// 输出每次插入后的数组状态printf( 当前数组状态: );for (int k 0; k n; k) {printf(%d , arr[k]);}printf(\n);}// 输出每次间隔完成后的数组状态printf(间隔 %d 排序后的数组: , gap);for (int i 0; i n; i) {printf(%d , arr[i]);}printf(\n\n);} }// 打印数组函数 void printArray(int arr[], int size) {for (int i 0; i size; i) {printf(%d , arr[i]);}printf(\n); }// 主函数 int main() {int arr[] {22, 48, 65, 68, 68, 10, 84, 45, 37, 88, 71, 89, 89, 13, 59};int n sizeof(arr) / sizeof(arr[0]);printf(排序前的数组: \n);printArray(arr, n);shellSort(arr, n);printf(排序后的数组: \n);printArray(arr, n);return 0; } 希尔排序Shell Sort的时间复杂度和空间复杂度分析如下 1.4 时间复杂度 希尔排序的时间复杂度取决于所选的增量序列。对于不同的增量序列希尔排序的性能可能会有很大的差异。最坏情况使用原始的希尔增量即每次将增量减半从 n 2 \frac{n}{2} 2n​开始希尔排序的时间复杂度在最坏情况下可以达到O(n2)。这通常发生在数据已经接近有序但尚未完全有序的情况下因为此时的插入排序希尔排序在增量为1时的特殊情况可能会执行大量的元素移动。 平均情况在实际应用中希尔排序通常比简单的插入排序要快得多特别是在处理大数据集时。虽然其最坏情况时间复杂度较高但平均情况下希尔排序的性能通常优于O(n2)的排序算法。 最优增量序列通过选择更好的增量序列如Hibbard增量、Sedgewick增量等可以进一步改进希尔排序的性能。然而找到最优的增量序列仍然是一个未解决的问题因此希尔排序的时间复杂度在很大程度上仍然是一个开放性问题。 实验观察实验结果表明对于中等规模的数据集希尔排序的性能通常与快速排序Quick Sort相当甚至在某些情况下可能更快。然而对于非常大的数据集快速排序通常具有更好的性能。 1.5 空间复杂度 希尔排序是一种原地排序算法in-place sorting algorithm这意味着它只需要一个与输入数组大小相同的额外空间来存储临时变量在插入排序的每一步中用于保存要插入的元素。因此希尔排序的空间复杂度是O(1)。 1.6 希尔排序动画 在希尔排序的动画中用三种颜色来帮助理解排序过程橙色当前插入的元素表示正在考虑插入排序的那个元素i。绿色正在比较或插入的位置表示当前正在比较或准备插入的具体位置j。紫色属于同一间隔组的元素用来表明在当前的间隔gap下这些元素属于同一组将通过插入排序在组内进行比较和排序。
http://www.tj-hxxt.cn/news/161405.html

相关文章:

  • 高端网站建设企业网站前端后端分开做可以吗
  • 广州网络建站网站开发公司vue框架
  • 网站建设及维护费用盐城做企业网站公司
  • 怎么做优惠券的网站怎么注册微信公众号
  • 厦门网站开发培训怎么把html文件生成网址
  • 商务网站需求分析油管代理网页
  • 电子商务专业网站设计网页制作自学教程
  • 如何利用div做网站如何改进网站
  • 镇江市建设局网站网站推广的实际案例
  • 付公司网站建设费用会计分录高校学校网站建设
  • 河南企业网站建设公司介绍湛江网站
  • 网站建设氵金手指下拉做用户运营应该关注哪些网站
  • 视屏网站开发者工具无视频文件北京网页网站设计
  • 哈尔滨 高端网站建设建站至尊
  • asp技校网站广告软文200字
  • 网站建设目的内容输出河南品牌网站建设
  • 网站什么时候备案网上注册公司要钱吗
  • 网站首页三张海报做多大建筑人才培训网
  • 营销型企业网站建设步骤合肥网络推广优化公司
  • 昆山外贸型网站制作网站建设征求意见稿
  • 什么网站专做二手名表h5自适应网站模板下载
  • 英文网站建设详细方案网络推广服务费计入什么科目
  • 东莞网站建设推广咨询平台搬瓦工ss wordpress
  • 网站建设的研发支出费用化如何创建网站平台的详细步骤
  • 大连开发区招聘网站我的个人博客
  • 手机行情网站有自己的网站怎么做淘宝客
  • 虚拟空间做网站网站关键词排名优化应该怎么做
  • 网站建设与维护基础知识中科宁波网站建设
  • 汕头网站设计定制软件编程入门先学什么
  • 网站建设程序文件深圳最新消息今天新增