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

沈阳酒店企业网站制作网址大全免费网站

沈阳酒店企业网站制作,网址大全免费网站,网络公司专业做网站,一 美食 视频网站模板下载安装目录 1.希尔排序( 缩小增量排序 ) 2.动图 ​编辑 3.代码实现 预排序实现 子序列排列实现 单趟排序实现 对整组数进行子排序 希尔排序代码 代码测试 时间复杂度分析 希尔排序的特性总结#xff1a; 1.希尔排序( 缩小增量排序 ) 基本思想#xff1a; 1.先选定一个…目录 1.希尔排序( 缩小增量排序 ) 2.动图 ​编辑 3.代码实现 预排序实现  子序列排列实现 单趟排序实现 对整组数进行子排序 希尔排序代码 代码测试  时间复杂度分析 希尔排序的特性总结 1.希尔排序( 缩小增量排序 ) 基本思想 1.先选定一个小于N的整数gap作为第一增量然后将所有距离为gap的元素分在同一组并     对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量重     复上述操作… 2.当增量的大小减到1时就相当于整个序列被分到一组进行一次直接插入排序排序完成。 2.动图  3.代码实现 思路 预排序实现 插入排序 预排序实现  根据当前增量数组被分为若干子序列这些子序列的元素在原数组中间隔着固定的增量。对每个子序列应用插入排序。 假设最初增量为5 d越大数据挪动得越快d越小数据挪动得越慢。前期让d较大可以让数据更快得移动到自己对应的位置附近减少挪动次数。 注一般情况下取序列的一半作为增量然后依次减半直到增量为1也可自己设置。 完成了一轮希尔排序此时整个数组并不完全有序但是已经比原始的数组更接近有序了。然后减小增量通常是将原来的增量除以2或者除以31现在选择下一个增量为 2按照此排序规则继续预排序即可直到增量为1时则为直接插入排序此时则排序完成。 子序列排列实现 //子序列int gap;int endint tmp a[end gap];while (end 0){if (tmp a[end]){a[end 3] a[end];end - gap;}else{break;}}a[end gap] tmp; 这里只需要在插入排序的基础上修改一下即可。end的所加所减都为gap; 单趟排序实现 int gap;//单趟排序实现for (int i 0; i n - gap; i gap){//子序列int end i;int tmp a[end gap];while (end 0){if (tmp a[end]){a[end 3] a[end];end - gap;}else{break;}}a[end gap] tmp;} 这里的 n-gap 和插入排序中的 n-1 一样是为了防止越界 对整组数进行子排序 int gap;for (int j 0; j gap; j){//单趟排序实现for (int i 0; i n - gap; i gap){//子序列int end i;int tmp a[end gap];while (end 0){if (tmp a[end]){a[end 3] a[end];end - gap;}else{break;}}a[end gap] tmp;}} 外层循环for (int j 0; j gap; j)意在对每个以gap为间隔的分组进行遍历。 这里进行一下优化 三层代码的循环是每一组子排序排完再进行下一组直到排完整个数组。 下面这组代码优化后效率并没有很大的提升只是代码更为简洁。 这组代码是齐头并进排完第一组的前n个就排下一组了并没有把第一组全部排完。 int gap;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 3] a[end];end - gap;}else{break;}}a[end gap] tmp;}   希尔排序代码 分析 gap越大大的值更快调到后面小的值更快调到前面越不接近有序。 gap越小大的值更慢调到后面小的值更慢调到前面越接近有序。 当gap为1就是直接插入排序。  所以我们这里的gap值应该是在变化的一般我们随n变化取gap gap/31或者gap  gap/2; void ShellSort(int* a,int n) {int gap n;while (gap1){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;}} } 这里无论gap是奇数还是偶数这里gap最终都会除以到值为1。 gap1时是预排序目的让其接近有序。 gap1时是直接插入排序目的让其有序。 在gap1时已经十分接近有序了 代码测试  时间复杂度分析 希尔排序的时间复杂度并不固定它依赖于所选择的间隔序列增量序列。直到今天已经有多种不同的间隔序列被提出来每种都有自己的性能特点。 《数据结构(C语言版)》--- 严蔚敏 《数据结构-用面相对象方法与C描述》--- 殷人昆 因为咋们的gap是按照Knuth提出的方式取值的而且Knuth进行了大量的试验统计我们暂时就按照O(N^1.25) 到  O(1.6* N^1.25) 来算。 希尔排序的特性总结 时间复杂度O(N²) 空间复杂度O(1) 稳定性不稳定 复杂性简单 如有错误请指正
http://www.hkea.cn/news/14305463/

相关文章:

  • 自己弄个网站要怎么弄建筑网片施工中的用途
  • seo网站建设流程网站优化服务
  • 有孩子做的网站wordpress 段落 两格
  • 做英文网站内容来源app拉新佣金排行榜
  • 阿里云个人网站制作服装品牌策划方案
  • 怎么免费制作网站价格低的跑车
  • 互联网建设网站的的好处微信支付公司网站
  • 湛江制作企业网站徽章设计制作网站
  • 邢台网站建设哪家公司好jsp网站开发 英文
  • 怎么申请pc网站域名263企业邮箱登陆入囗
  • 中国建设银行网站主页网站可以用什么做
  • 黄金网站app软件下载安装wordpress显示图片慢
  • 企业建网站哪家好wordpress标题关键词描述
  • 免费文档网站企业管理咨询中心
  • 网站建设开发费用入什么科目自学做网站要学什么
  • 广告制作是做什么的临淄专业网站优化哪家好
  • 官方网站建设最重要的是什么德州网站制作哪家好
  • 大连制作网站公司杭州网站推广服务
  • 深圳网站建设相关推荐报考二级建造师官网
  • 搅拌机东莞网站建设技术支持品牌做网站
  • 昆明做网站魄罗科技在哪可以做网站
  • 网站建设公司要多少钱Wordpress 无效插件
  • 做网站源代码电子商务网站建设市场
  • 零基础建设网站教程深圳龙岗租房子多少钱一个月
  • 网站备案信息代码永年网站制作
  • 金泉网站建设开发制作网页系统
  • 那个网站报道过鸟巢建设南宁企业网站建设制作
  • 旅游网站建设分析kol合作推广
  • 怎么制作外贸网站模板海外服务器怎么搭建
  • 服装网站公司网站企业设计图片