Arrays 循环遍历数组宽度搜索
这个问题的标题可能有点误导,但我不确定如何描述我的问题 我想重新构造数组的键,使循环按以下模式跳转: 例1:Arrays 循环遍历数组宽度搜索,arrays,algorithm,sorting,Arrays,Algorithm,Sorting,这个问题的标题可能有点误导,但我不确定如何描述我的问题 我想重新构造数组的键,使循环按以下模式跳转: 例1: keys from 1,2,3,4,5,6,7,8,9 will lead to 1,9,5,3,7,2,6,4,8 以第一个元素-1为例 以最后一个元素-9为例 取中间(1+9)/2=5 上半场,在1-5-3的中间 跳到下半场,打5-9-7中间 跳回到上半场的上半场,然后拿2分 跳回到下半场的上半场,然后拿6分 跳回到上半场的下半场,然后拿4分 跳回到下半场的下半场,然后拿8分
keys from 1,2,3,4,5,6,7,8,9 will lead to 1,9,5,3,7,2,6,4,8
- 以第一个元素-1为例
- 以最后一个元素-9为例
- 取中间(1+9)/2=5
- 上半场,在1-5-3的中间
- 跳到下半场,打5-9-7中间
- 跳回到上半场的上半场,然后拿2分
- 跳回到下半场的上半场,然后拿6分
- 跳回到上半场的下半场,然后拿4分
- 跳回到下半场的下半场,然后拿8分
key from 1,2,3,4,5,6,7,8,9,10 will lead to 1,10,5,6,3,8,2,7,4,9
由于我对算法和数据结构知之甚少,我尝试使用递归/分而治之,但我没有成功地实现两部分之间的跳跃
所以我想我必须添加一些参数,比如被分割的半部分的长度和位置,但在这里我无法实现
对我来说,有趣的问题是:我的思维是否复杂,是否有更简单的解决方案?还是这个问题真的这么复杂
我很高兴收到任何关于文学或代码片段的建议,可以尝试一下
谢谢并致以最良好的问候
Stephan我不确定您是否可以通过递归或分治来实现此算法。但您可以使用广度优先搜索优雅地实现这一点。下面是python伪代码,其中有一个元素为interval的队列
#使用整个间隔初始化队列Q
n=len(您的_列表)
#广度优先搜索
Q.push([0,n-1])
虽然Q不是空的:
独立电视台=q.pop_front()
进程(itv)#打印间隔itv的中间元素等。
itv_1,itv_2=将_间隔_分成两部分(itv)
如果len(itv_1)>0:
Q.push(itv_1)
如果len(itv_1)>0:
Q.push(itv_2)
希望它有帮助:)您需要更好地描述您的问题,可能至少是您的一个示例中的步骤,因为根据当前的解释,很难看到从«键»到最终数组的过程,我扩展了解释。我希望现在能更容易理解。我想你可以通过对(低、高)对的元组进行排队来做到这一点,但它可能不会总是给出你想要的结果。首先是1/2索引,然后是1/4索引,然后是1/8索引,然后是3/4索引,等等。嘿,cntswj,谢谢你的代码,我一回到办公室电脑就会试试。