首页 > 其他分享 >Homework 2

Homework 2

时间:2024-10-28 09:58:39浏览次数:3  
标签:sort return int mid merge Homework 逆序

HOMework 2

本次小作业难度较低,大部分代码可以直接AC,比较有趣的一道题需要逆序merge_sort,记录一下

题目:1285. イレイナ爱排序

https://acm.sjtu.edu.cn/OnlineJudge/problem/1285
这道题说的是通过给定的次数来找到一个数组的排序,首先我们这么想,对于一个无序的数列,我们需要进行merge的时候,除了第一次进入merge,剩下每一次都要两次merge,最多会到达把一个逆序对拆分的地步。所以反过来,没两个merge操作代表有一个交换,出现一个逆序对,而这个是由上到下的,如果逆序对出现同一侧(l ~ mid)那么实际上会继续进行2^n次的操作,所以我们必须保证在每层merge交换mid的左右两侧,这样才能保证这一次交换只消耗两次merge,所以可以写出我们的merge程序
而最开始我把k加到了merge的参数之中,但是后来却不太清楚该怎么书写,因为k= 2,如果进入两个子函数,相当于进行4次,但是把k拿到外面作为全局变量就迎刃而解力。

int k;
void reverse_merge_sort(int l,int r) {
  if(k == 0) { // k == 0 说明次数到达,设定flag = true 
    flag = true;
    return;
  }
  if(l>=r) {
      return; //到达边界
  }
  int mid = (l+r)>>1;
  if(l == mid)
    return;
  swap(Q[mid-1],Q[mid]);
  k-=2;//每一次swap让k-2
  reverse_merge_sort(l,mid);
  if(k == 0) {
    return;
  }
  reverse_merge_sort(mid,r);
}

共勉

标签:sort,return,int,mid,merge,Homework,逆序
From: https://www.cnblogs.com/freewings-wjy/p/18509760

相关文章

  • homework1
    缺失值处理将一些0值不合理的列以列均值填充#缺省值处理features_with_zero=['Glucose','BloodPressure','SkinThickness','Insulin','BMI']data[features_with_zero]=data[features_with_zero].replace(0,np.nan)#使用均值填补NaNdata_f......
  • ENG2002 Computer Programming Homework
    THEHONGKONGPOLYTECHNICUNIVERSITYENG2002ComputerProgrammingHomeworkInstructionsAtthebeginningofeachPythonfile,addacommenttoshowyourstudentIDandname.Thisassignmentcomprises3parts.Youmayuseanewfileforeachpartor......
  • 国庆homework
    1最长递增序列简单来说就是从一串数字李找出连续的最长递增序列,暴力的思路就是通过两次循环,第一层是便利每个元素,第二层便利第一层之前的元素,如果当前元素大于前一个元素,并且以j结尾的递增子序列长度加1大于dp[i],则更新普通点击查看代码intn;cin>>n;intma......
  • 题解:洛谷P2339 [USACO04OPEN] Turning in Homework G
    题目链接:洛谷P2339[USACO04OPEN]TurninginHomeworkG首先我们考虑如何处理到达给定时间后才能交作业这一限制。其实在生活中,我们一般只会考虑什么时候交作业截止(除了某些卷王),这样我们只用考虑如何在最大结束时间之前交作业,而不是在所有作业都没开始交之前考虑如何转悠(前者明......
  • 软工homework2:个人项目-论文查重(Python)
    这个作业属于哪个课程广工计院计科34班软工这个作业要求在哪里作业要求这个作业的目标个人独立完成一次论文查重项目,完成项目后能够了解项目开发工程流程,学会使用PSP表格,完成性能分析以及测试等零、GitHub地址一、需求题目:论文查重描述如下:设计一个论文查重......
  • 软工homework1:自我介绍+5问
    这个作业属于哪个课程广工计院计科34班软工这个作业要求在哪里作业要求这个作业的目标学会创建并使用自己的博客和Github,熟悉其中的基本操作和功能,用Markdown编写完成自我介绍以及软工5问前言亲爱的读者,正如你所见,这是我在博客园发布的第一篇博客,也是软工的第......
  • day 123 homework
    name='nick'height='180'weight='140'name+height+weight'nick180140'什么是编程语言?编程语言是人与计算机沟通的介质什么是编程?编程是使用编程语言去写文件以完成某个目的为什么要编程?奴役计算机,解放劳动力。计算机五大组成部分分别是什么,......
  • Homework11
    请举例你所了解的测试工具?名称功能1.PythonUnittest用于Python程序的单元测试。Python标准库中的单元测试框架,类似于JUnit,支持自动化测试。2.JUnit用于Java程序的单元测试。JUnit是一个Java语言的单元测试框架,允许开发者编写代码来测试代码的各个部分。3.Postm......
  • Homework from Zhejiang 和结式到底是什么关系
    HomeworkfromZhejiang本题希望解决的问题是:给定两个(首一)多项式\(f,g\),设\(n=\degf,m=\degg\)。求出\(\prod_{i=1}^n\prod_{j=1}^m(x_i+y_j)\),这里\(x_i,y_j\)是\(f,g\)的所有根。首先需要理解一下为什么这个式子能求出来:若\(f,g\)的系数都属于数域\(K\)内,为何......
  • Homework9
    1.什么是模块化?模块化是一种设计理念,它强调将复杂的系统分解为较小的、独立的和可替换的组件,这些组件称为“模块”。每个模块都负责系统中的一个具体功能,并且可以独立开发、测试和替换,而不影响其他模块或整个系统的功能。为什么要模块化?降低复杂性:通过将复杂系统分解为更小、......