算法:归并排序/倒置个数【排序】

非递归合并排序

Description

合并(归并)排序的核心思想是:每次从中间位置将数组分组再分别排序。请实现其非递归方案。

Input

输入的每一行表示一个元素为正整数的数组,所有值用空格隔开,第一个值为数值长度,其余为数组元素值。

Output

输出的每一行为排序结果,用空格隔开,末尾不要空格。

Sample Input 1

13 24 3 56 34 3 78 12 29 49 84 51 9 100

Sample Output 1

3 3 9 12 24 29 34 49 51 56 78 84 100

python3

参考

# 归并排序

# 非递归合并排序
# 复制要合并排序的子序列,遍历原子数组,从复制数组的low和mid+1同时开始比较,小的入组
# 有一边全部入组完后,另一边剩下的全部入组


def merge(arr, low, mid, high):
    assi_arr = arr.copy()
    i = low
    j = mid + 1
    for k in range(low, high+1):
        if i > mid:	# 左半边遍历完
            arr[k] = assi_arr[j]	# 直接右边剩下的入组
            j += 1
        elif j > high:	
            arr[k] = assi_arr[i
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值