归并排序和希尔排序

1归并排序归并排序是一种分治算法,把大的问题分成一个个小部分去处理,最终解决大问题。假设有两个数组A,B,每个数组都是从小到大排好序的,如果要将这两个数组合并成一个数组,并且从小到大排好序那么只需要从头比较,依次将A,B中较小的值放入新的数组。对于一个无序的数组,也可以通过这种方法排序,将数组从中间分成2部分,但是大概率是两个无序数组,然后接着对分开的两部分再分,直到每部...
摘要由CSDN通过智能技术生成

1  归并排序

归并排序是一种分治算法,把大的问题分成一个个小部分去处理,最终解决大问题。

 假设有两个数组A,B,每个数组都是从小到大排好序的,如果要将这两个数组合并成一个数组,并且从小到大排好序

那么只需要从头比较,依次将A,B中较小的值放入新的数组。

对于一个无序的数组,也可以通过这种方法排序,将数组从中间分成2部分,但是大概率是两个无序数组,然后接着对

分开的两部分再分,直到每部分都是只有一个数,显然每部分都是有序的了。如下图:

一.先分

二.比较排序再和 

 然后对最下一层两两比较,例如80  30   得到新的序列  [30,80]                       60   20  得到新的序列[20,60]

然后在对新序列[30,80]和[20,60]进行合并, 从头比较得到新的序列[20,30,60,80]         同理可得 右边的序列[10,50,60,70]     

 最后对[20,30,60,80] 和 [10,50,60,70]   进行合并,先创建一个新数组,长度等于两个数组长度的和,然后开始比较:

 10比20小,先将10存入; 将20和50比较,20小,将20存入;将50和30比较,30小,将30存入;50和60比较,50小,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值