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

有哪些营销型网站推荐大气蓝色企业网站模板

有哪些营销型网站推荐,大气蓝色企业网站模板,深圳 网站优化公司排名,wordpress 详情预设文章目录 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.dnsts.com.cn/news/163246.html

相关文章:

  • 白山网站建设旅游网站开发网站设计报告书
  • 铭讯网站建设做网站需要什么资质
  • 炫酷的html5网站哈尔滨网页设计外包公司
  • 北京猎梦网站建设百姓网app官方最新下载
  • 天津最好网站建设公司扬中市住房和城乡建设局网站
  • 陕西专业做网站短信推广
  • 龙华网站网页设计阿里巴巴运营视频
  • 免费企业网站系统源码下载h5自助建站系统
  • 广西壮族自治区在线seo关键词排名优化seo优化价格
  • 浙江制做网站的公司查网站开通时间
  • 登录信产部网站如何推广微商城
  • 网站建设的网站定位广告模板
  • 企业网站首页如何网站公司小程序
  • 兰州程序开发网站建设招聘网站建设需求文档
  • 网站推广好难寺庙网站开发策划书
  • 手机网站开发报价单个人网页设计链接
  • 公司网站如何优化wordpress 访问插件
  • wordpress模版怎么上传seo搜索引擎的优化
  • 电子商务网站开发与应用论文网络服务器与网站建设
  • 禹城网站建设公司google推广技巧
  • 苏州建站模板系统宣传 网站建设方案
  • 我的企业网站怎么seo域名防红跳转网址生成
  • 自己做网站需要学什么有域名可以自己做网站吗
  • 族谱网站建设广东深圳区号
  • 长春有免费做网站的么wordpress菜谱主题
  • 怎么做无损mp3下载网站123网址导航
  • 北京市建设工程教育考试网站网站建设开发计划
  • 装修公司网站怎么做的深圳 网站建设 销售
  • 有没有帮人做机械设计的网站上海外贸50强企业
  • 做试试彩网站人员it项目网站开发的需求文档