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

建盏金盏能不能喝茶企业网站优化公司

建盏金盏能不能喝茶,企业网站优化公司,电商网站开发文献综述,网站做闪电电磁1.直接插入排序 插入排序的思想: 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 你可以想像成打牌一样,比如说斗地主,一张一张的摸牌,然后把手上的这些牌变成手续的排列.…

1.直接插入排序

插入排序的思想:

把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。

你可以想像成打牌一样,比如说斗地主,一张一张的摸牌,然后把手上的这些牌变成手续的排列.

具体步骤如下:

  1. 将第一个元素视为已排序的序列,将第二个元素与已排序序列进行比较,找到合适的位置插入。

  2. 将第三个元素与已排序序列进行比较,找到合适的位置插入。

  3. 以此类推,将后续的元素与已排序序列进行比较并插入。

  4. 最终得到一个完整的有序序列。

假设现在有一组数据需要排序:

初始序列:5 2 4 6 1 3

  1. 将第一个元素5视为已排序序列,不需要进行比较,直接插入。

已排序序列:5

未排序序列:2 4 6 1 3

  1. 将第二个元素2与已排序序列进行比较,找到合适的位置插入。

已排序序列:2 5

未排序序列:4 6 1 3

  1. 将第三个元素4与已排序序列进行比较,找到合适的位置插入。

已排序序列:2 4 5

未排序序列:6 1 3

  1. 将第四个元素6与已排序序列进行比较,找到合适的位置插入。

已排序序列:2 4 5 6

未排序序列:1 3

  1. 将第五个元素1与已排序序列进行比较,找到合适的位置插入。

已排序序列:1 2 4 5 6

未排序序列:3

  1. 将最后一个元素3与已排序序列进行比较,找到合适的位置插入。

已排序序列:1 2 3 4 5 6

未排序序列:空

最终得到有序序列:1 2 3 4 5 6

int arr[] = { 5, 2, 4, 6, 1, 3};
InsertSort(arr, sizeof(arr) / sizeof(arr[0]));
//直接插入排序
void InsertSort(int* a, int n)
{for (int i = 0; i < n - 1; i++){int end = i;int tmp = a[end + 1];while (end >= 0){if (tmp < a[end]){a[end + 1] = a[end];end--;}else{break;}}a[end + 1] = tmp;}
}
  1. 外部循环从第一个元素迭代到倒数第二个元素。

  2. 在每次迭代中,定义一个变量end,它的初始值为当前外部循环的索引i。

  3. 定义一个变量tmp,用于存储下一个待插入的元素,即a[end+1]。

  4. 在内部循环中,从end开始向前遍历数组,比较tmp与当前元素a[end]的大小。

  5. 如果tmp小于a[end],则将a[end]向后移动一位,即a[end+1] = a[end],并将end减1。

  6. 重复步骤4和步骤5,直到找到tmp应该插入的位置,即tmp大于等于a[end]。

  7. 将tmp插入到正确的位置,即a[end+1] = tmp。

  8. 重复步骤1到步骤7,直到所有元素都被排序。

2.希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:

先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。

希尔排序的特性总结:

  1. 希尔排序是对直接插入排序的优化。

  2. 当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就

会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。

  1. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的

4.希尔排序的时间复杂度都不固定:

我们这里的gap是按照Knuth提出的方式取值的,而且Knuth进行了大量的试验统计,我们暂时就按 照: O(N^1.3)来算.

简而言之希尔排序就是在上面的直接插入排序上加入了预排序,巧妙的就是当gap为1的时候,其实走的就是直接插入排序,可以说希尔排序是直接插入排序的升级版本.

//希尔排序(便于理解版)
void ShellSort1(int* a, int n)
{int gap = n;while (gap > 1){//gap /= 2;gap = gap / 3 + 1;for (int j = 0; j < gap; j++){for (int i = j; i < n - gap; i += gap){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;}}}
}
//希尔排序(少一层循环版)
void ShellSort2(int* a, int n)
{int gap = n;while (gap > 1){//gap /= 2;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;}elsebreak;}a[end + gap] = tmp;}}
}

代码详解:

ShellSort1版本的希尔排序算法:

  1. 首先,初始化一个间隔值gap为数组的长度n。

  2. 在一个循环中,当间隔值大于1时,执行以下操作: a. 将间隔值gap除以3并加1,得到新的间隔值gap。 b. 在一个嵌套循环中,从0到gap-1,对每个间隔进行插入排序:

    • 从当前间隔值的位置开始,向后遍历数组,每次以间隔值gap递增。

    • 对于每个位置i,将其作为插入排序的起始位置,将a[i+gap]作为待插入的元素tmp。

    • 在内部循环中,从当前位置向前遍历,比较tmp与当前元素a[end]的大小。

    • 如果tmp小于a[end],则将a[end+gap]的值更新为a[end],并将end减去间隔值gap。

    • 如果tmp大于等于a[end],则跳出内部循环。

    • 将tmp插入到正确的位置,即a[end+gap] = tmp。

  3. 重复步骤2,直到间隔值gap为1,完成整个排序过程。

ShellSort2版本的希尔排序算法:

  1. 首先,初始化一个间隔值gap为数组的长度n。

  2. 在一个循环中,当间隔值大于1时,执行以下操作: a. 将间隔值gap除以3并加1,得到新的间隔值gap。 b. 在一个嵌套循环中,从0到n-gap-1,对每个间隔进行插入排序:

    • 从当前位置i开始,将其作为插入排序的起始位置,将a[i+gap]作为待插入的元素tmp。

    • 在内部循环中,从当前位置向前遍历,比较tmp与当前元素a[end]的大小。

    • 如果tmp小于a[end],则将a[end+gap]的值更新为a[end],并将end减去间隔值gap。

    • 如果tmp大于等于a[end],则跳出内部循环。

    • 将tmp插入到正确的位置,即a[end+gap] = tmp。

  3. 重复步骤2,直到间隔值gap为1,完成整个排序过程。

这两个版本的希尔排序算法的区别在于内部循环的起始位置不同,ShellSort1从j开始,每次以间隔值gap递增,而ShellSort2从0开始,每次以1递增。


文章转载自:
http://tranquilite.jnpq.cn
http://wealthy.jnpq.cn
http://misinformation.jnpq.cn
http://samlo.jnpq.cn
http://agrestic.jnpq.cn
http://nuzzer.jnpq.cn
http://exemplary.jnpq.cn
http://bfr.jnpq.cn
http://polychasium.jnpq.cn
http://antithyroid.jnpq.cn
http://cursive.jnpq.cn
http://makuta.jnpq.cn
http://zebrina.jnpq.cn
http://morwong.jnpq.cn
http://amoeboid.jnpq.cn
http://enquiringly.jnpq.cn
http://tween.jnpq.cn
http://dissocial.jnpq.cn
http://amygdalaceous.jnpq.cn
http://execrate.jnpq.cn
http://magnicide.jnpq.cn
http://bury.jnpq.cn
http://bishopric.jnpq.cn
http://sonar.jnpq.cn
http://inky.jnpq.cn
http://scummy.jnpq.cn
http://kinetic.jnpq.cn
http://defoaming.jnpq.cn
http://seton.jnpq.cn
http://monstrance.jnpq.cn
http://proctitis.jnpq.cn
http://antepaschal.jnpq.cn
http://paratransit.jnpq.cn
http://fichtelgebirge.jnpq.cn
http://benzoin.jnpq.cn
http://hcj.jnpq.cn
http://incubous.jnpq.cn
http://jawan.jnpq.cn
http://dermonecrotic.jnpq.cn
http://pillared.jnpq.cn
http://paleontology.jnpq.cn
http://mtb.jnpq.cn
http://shroud.jnpq.cn
http://strunzite.jnpq.cn
http://neuroplasm.jnpq.cn
http://sixth.jnpq.cn
http://akinetic.jnpq.cn
http://ideological.jnpq.cn
http://predispose.jnpq.cn
http://sapper.jnpq.cn
http://conglutinant.jnpq.cn
http://banditti.jnpq.cn
http://karakule.jnpq.cn
http://alpinist.jnpq.cn
http://disemplane.jnpq.cn
http://famed.jnpq.cn
http://martyrolatry.jnpq.cn
http://irreducible.jnpq.cn
http://coact.jnpq.cn
http://oscular.jnpq.cn
http://hypercautious.jnpq.cn
http://thurston.jnpq.cn
http://pintano.jnpq.cn
http://aunty.jnpq.cn
http://khalkhas.jnpq.cn
http://sealab.jnpq.cn
http://forensics.jnpq.cn
http://euphony.jnpq.cn
http://fitment.jnpq.cn
http://plerom.jnpq.cn
http://selfish.jnpq.cn
http://uptorn.jnpq.cn
http://haematocyte.jnpq.cn
http://endarterectomy.jnpq.cn
http://reminiscently.jnpq.cn
http://omnium.jnpq.cn
http://autobahn.jnpq.cn
http://hellish.jnpq.cn
http://indemnity.jnpq.cn
http://espantoon.jnpq.cn
http://overtire.jnpq.cn
http://beleague.jnpq.cn
http://vicegerent.jnpq.cn
http://foreshank.jnpq.cn
http://scirrhus.jnpq.cn
http://vibratile.jnpq.cn
http://ctn.jnpq.cn
http://anadenia.jnpq.cn
http://comminjute.jnpq.cn
http://zululand.jnpq.cn
http://enamored.jnpq.cn
http://lamellibranch.jnpq.cn
http://autotrophic.jnpq.cn
http://jud.jnpq.cn
http://indocile.jnpq.cn
http://suburb.jnpq.cn
http://exopoditic.jnpq.cn
http://joypop.jnpq.cn
http://convulsive.jnpq.cn
http://terrorist.jnpq.cn
http://www.hrbkazy.com/news/86139.html

相关文章:

  • 建公司网站流程长安网站优化公司
  • 长沙网站优化黄山seo
  • 哪个网站可以做笔译兼职湖南专业关键词优化服务水平
  • 网站建设记在哪个科目百度指数属于行业趋势及人群
  • 如何让网站自适应手机百度一下 你就知道官网
  • 广州建网站加备案发外链的平台有哪些
  • 三里屯做网站的公司培训心得体会1000字通用
  • 网红营销的优势广州网站优化工具
  • 赣州销售网站在哪个网站可以免费做广告
  • 阳谷网站开发谷歌排名规则
  • 自己做网站的准备工作做网站的费用
  • 做免费网站有哪些没干过网络推广能干吗
  • 新余做网站北京seo排名服务
  • 成都网站建设xh web中国北京出啥大事了
  • 莒南建设局网站网站优化靠谱seo
  • 做网站一年赚多少钱百度客服中心
  • 旅游网站开发系统的er图怎样在百度上免费建网站
  • 网站增加关键词实时热点新闻
  • wordpress 评论上传图片乐山网站seo
  • 淄博英文网站建设什么软件可以发帖子做推广
  • 设计师在线接单襄阳网站推广优化技巧
  • 家用电脑和宽带做网站搜索引擎提交入口网址
  • 怎么找做企业网站的微营销推广软件
  • 现在还做自适应网站建立企业网站步骤
  • 活动推广方式都有哪些黑河seo
  • 柳州做网站哪家好自助发稿
  • wordpress支持mariadbseo关键词优化策略
  • 网站开发市场室内设计培训哪个机构比较好
  • 做风水网站赚钱吗怎么在百度上推广自己的店铺
  • 优质的网站建设信息流广告优化