我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法。归并排序原理请参见:https://www.jianshu.com/p/33cffa1ce613 或 https://www.runoob.com/w3cnote/merge-sort.html

原题链接:1283: 简单排序


python代码如下:

import math# 归并排序
def merge(arr, l, m, r):n1 = m - l + 1n2 = r - m# 创建临时数组L = [0] * n1R = [0] * n2# 拷贝数据到临时数组 arrays L[] 和 R[]for i in range(0, n1):L[i] = arr[l + i]for j in range(0, n2):R[j] = arr[m + 1 + j]# 归并临时数组到 arr[l..r]i = 0  # 初始化第一个子数组的索引j = 0  # 初始化第二个子数组的索引k = l  # 初始归并子数组的索引while i < n1 and j < n2:if L[i] <= R[j]:arr[k] = L[i]i += 1else:arr[k] = R[j]j += 1k += 1# 拷贝 L[] 的保留元素while i < n1:arr[k] = L[i]i += 1k += 1# 拷贝 R[] 的保留元素while j < n2:arr[k] = R[j]j += 1k += 1def merge_sort(arr, l, r):if l < r:m = int((l + (r - 1)) / 2)merge_sort(arr, l, m)merge_sort(arr, m + 1, r)merge(arr, l, m, r)T = int(input())
for i in range(T):s = input().split()lt = [int(x) for x in s]lt1 = lt[::-1]lt1.pop()lt1 = lt1[::-1]n = len(lt1)merge_sort(lt1, 0, n - 1)for j in range(n):if j != n - 1:print(lt1[j], end=' ')else:print(lt1[j])

C语言代码如下:

#include <stdio.h>
#include <string.h>
#define N 1010
int a[N],b[N],r[N];
void msort(int s,int t) //归并排序
{int i,j,mid,k;if(s==t)           //如果只有一个数字则返回,无需排序 return;mid=(s+t)/2;msort(s,mid);        //分解左序列 msort(mid+1,t);        //分解有序列 i=s;j=mid+1;k=s;while(i<=mid && j<=t)   //接下来合并 {if(a[i]<=a[j]){r[k]=a[i];k++;i++;}else{r[k]=a[j];k++;j++;}}while(i<=mid) //复制左边子序列剩余 {r[k]=a[i];k++;i++;}while(j<=t)        //复制右边子序列剩余 {r[k]=a[j];k++;j++;}for(i=s;i<=t;i++)a[i]=r[i];
}
int main()
{int m,n,i,j,t;scanf("%d",&m);while(m--){scanf("%d",&n);memset(a,0,n);          //初始化数组for(i=0;i<=n-1;i++)       //输入scanf("%d",&a[i]);msort(0,n-1);for(i=0;i<=n-1;i++)     //输出 {if(i!=n-1)printf("%d ",a[i]);elseprintf("%d\n",a[i]);}}return 0;
}

TZC 1283: 简单排序 —— 归并排序相关推荐

  1. TZC 1283: 简单排序 —— 快速排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.快速排序原理请参见:https://www.runoob.com/w3cnote/quick-sor ...

  2. TZC 1283: 简单排序 —— 堆排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.堆排序原理请参见:https://blog.csdn.net/u010452388/article/ ...

  3. TZC 1283: 简单排序 —— 希尔排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.希尔排序原理请参见:https://www.cnblogs.com/chengxiao/p/6104 ...

  4. TZC 1283: 简单排序 —— 插入排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://zhuanlan.zhihu.com/p/122293204 或 ...

  5. TZC 1283: 简单排序 —— 选择排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.比较排序过程中,按住某一个数和后面的所有数都比较一下,如果前者大于后者,则进行交换,比较排序过程中显 ...

  6. TZC 1283: 简单排序 —— 冒泡排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://www.runoob.com/w3cnote/bubble-so ...

  7. TZC 1283: 简单排序 —— 比较排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.比较排序是最简单的一种方法,核心实质就是按住第一个和后面所有的都比较一下,然后第二趟再按住第二个和后 ...

  8. TZC 1283: 简单排序 —— 函数法

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.首先来说函数法,python中可以使用sort函数,C语言可以使用qsort函数实现. 原题链接:1 ...

  9. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

最新文章

  1. 深入理解Oracle RAC 12c 笔记
  2. 看完弄懂,明年至少加 5K
  3. docker部署Javaweb环境数据库连接问题
  4. table 在网页无法顶到头部问题
  5. 梯度下降原理及在线性回归、逻辑回归中的应用
  6. 计算机二级vfp模拟考试题,计算机等级考试二级VFP模拟练习题[10]
  7. hadoop的Map阶段的四大步骤
  8. JavaScript 获取浏览器版本
  9. 【MyBatis】第一章 快速入门
  10. sv信道模型是什么_Unity Shader|基本光照模型实现中遇到的疑思
  11. Oracle执行计划Explain Plan 如何使用
  12. 1g1h1m mysql_mysql服务器优化
  13. Flutter高仿微信-第26篇-新的朋友
  14. Android学习视频推荐
  15. 千兆12光12电管理型工业以太网交换机 12千兆光12千兆电口宽温环网交换机
  16. 126. 精读《Nuxtjs》
  17. Z-blogPHP蜘蛛访问日志统计插件+自动收集死链
  18. PyCharm中光标变粗的解决方法
  19. 信捷XD/XC系列PLC 控制台达B2系列伺服电机程序,手动自动,循环,循环次数设定
  20. 最最最最基本的服务器网站维护防御攻略

热门文章

  1. 如何用java编写小游戏
  2. 刺客信条 奥德赛的性能测试软件要求,《刺客信条:奥德赛》硬件配置要求测试!买Xbox One X性价比高!...
  3. pandas 分类汇总等一些用法
  4. 第一份工作今天上班做HR,领导让我做一个招聘流程,怎么做呀?
  5. 怎么把css引入到php,PHP引入合并多个JS和CSS文件实例
  6. MessageBox.Show 方法使用:
  7. 2021最新Qt6开发环境(Qt Creator)安装以及卸载记录
  8. C++实现英文字母菱形输出
  9. 一文搞懂Java的多线程底层逻辑,再也不怕多线程了
  10. ASP.NET验证码相关问题