当前位置: 首页 > 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.w-s-a.com/news/263727/

相关文章:

  • 个人网站教程个人网站有必要备案吗
  • 网站建设推广好做吗黄浦企业网站制作
  • 怎样做28网站代理中山网站建设方案外包
  • vs2010做网站前台搭建小网站
  • 做视频必须知道的一些网站wordpress 标签鼠标滑过_弹出的title 代码美化
  • 怎么做室内设计公司网站电商运营培训视频课程
  • 昆明网站策划天津市建筑信息平台
  • 三亚放心游app官方网站wordpress 个人主题
  • 做简单的网站备案平台新增网站
  • 中国建设网站银行网络营销推广方案整合
  • 网站域名列表dede网站白屏
  • 站长工具一区品牌建设卓有成效
  • 电子商务网站建设案例wordpress批量编辑
  • 想代理个网站建设平台100个最佳市场营销案例
  • 钟表东莞网站建设石家庄做网站时光
  • 织梦 图片网站源码成都建设工程安监局网站
  • 做兼职的网站策划书湖北省建设工程造价信息网
  • 企业网站网址长期做网站应该购买稳定的空间
  • 网站静态化设计html5手机网站制作
  • 深圳最简单的网站建设家居网站建设全网营销
  • 如何取消网站备案佛山网站优化公司
  • 网站开发 成都广水网站设计
  • 音乐网站建设目标合同管理系统
  • jq网站特效插件如何知道网站是否被k
  • 自己的网站怎么接广告网站搭建收费
  • 宁波大型网站制作建立一个网站 优帮云
  • 大连零基础网站建设教学电话有哪些比较好的做ppt好的网站
  • 哪个网站做logo设计我的建筑网
  • php电子商务网站开发沂源手机网站建设公司
  • html和php做网站哪个好3gcms企业手机网站整站源码asp