Java 应用合并排序逻辑

Java 应用合并排序逻辑,java,algorithm,mergesort,Java,Algorithm,Mergesort,我正在尝试解决一个问题,我将使用合并排序来获得以下情况: 在n个元素的数组中 获取数组中的最小数,然后获取最大数,这样它们的减法(或这些数之间的差值最大) 例如: n=8 arr{7,8,10,20,4,19,50,70} 我想得到4和70,因为它们的差值是66 不管我得到的是最小的还是最大的数字,我只关心它们减法的最大差异。此外,第一个数字必须低于第二个数字,不允许使用70和4 因为这个问题需要我修改合并排序代码,所以我在想:1)将所有数字划分为1的数组,2)将数组中的I数与I+1数进行比较,

我正在尝试解决一个问题,我将使用合并排序来获得以下情况: 在n个元素的数组中

获取数组中的最小数,然后获取最大数,这样它们的减法(或这些数之间的差值最大)

例如: n=8 arr{7,8,10,20,4,19,50,70} 我想得到4和70,因为它们的差值是66 不管我得到的是最小的还是最大的数字,我只关心它们减法的最大差异。此外,第一个数字必须低于第二个数字,不允许使用70和4

因为这个问题需要我修改合并排序代码,所以我在想:1)将所有数字划分为1的数组,2)将数组中的I数与I+1数进行比较,如果I数最小,则获得它们的差值,并在数组中的所有位置上移动


你觉得怎么样?另外,我在设置基本情况时遇到问题:S请帮助

基本的合并排序可以对数组进行排序,这样就可以轻松地获得最大和最小的数字。但你只是试图修改数组,这样你只能得到最大和最小的数字——你不关心中间的那些。一旦你认出它们,它们实际上就是垃圾

你如何识别你正在查看的数字是否无用?好吧,如果在你目前的范围内,它不是最小的,也不是最大的


首先查看合并排序的psuedo代码。为了更紧密地解决这个问题,您可以做哪些最小的更改?

合并排序的原理是将较小部分的结果合并到较大部分

在合并排序中,首先将2个元素(2个数组,1个元素)合并为2个元素的已排序数组,然后将2个数组,2个元素的已排序数组合并为4个元素的已排序数组(因为这2个数组已排序,您只需遍历和比较,在升序排序中,两个数组中较小的元素总是排在第一位),然后将包含4个元素的2个排序数组合并为包含8个元素的排序数组

| | | | | | | | | |sorted | | | | |sorted | | |sorted | | | | | | | | | | |已排序的| | || |排序|| |分类| 现在,你只需要找到最大的和最小的,因此,你只需要在2个元素中找到最大的和最小的。比较2个元素的2个数组中最大的2个元素并找出较大的元素,然后比较4个元素的2个数组中最大的2个元素并找出较大的元素,依此类推。(小边也一样。)

| | | | | | | | | |S L|||| |Smllst Lrgst|| |只需要关心S&L| 换句话说,您不再对整个数组进行排序,而是查找最大和最小的数组并合并结果以获得最终答案


顺便说一句,我觉得这有点像快速选择到快速排序。

当然似乎是一个“家庭作业”问题。发布你的代码,我们可以进一步帮助你。家庭作业是拿出一个完整的程序来解决一个合理的问题,我需要一个意见,关于如何解决方法上的递归的当前方法的另一个观点。。。对不起,Duncan,到目前为止没有代码,只有逻辑…简单地按升序排序数组将保证最低的数字是第一个,最大的数字是最后一个。它们的差异总是最大的,因此您要查找升序排序数组中的第一个元素和最后一个元素。我是不是想得太简单了? | | | | | | | | | |S L| | | | |Smllst Lrgst| | |only need to care about S & L |