我帮你调了半天还是没有看出来具体是哪点出错了
不过你大概的算法我看出来了,是从左右两边同时与关键数进行对比而且对比成功后还是进行的交换,而不是更换位置(这个很有可能是出错的原因)我觉得 可能是在两边 交换的过程造成了无限循环。
其实对比的时候只从一个方向同关键数对比就行叻而且若某个数字满足移动的条件,应当把它取出放到队首或队尾而不是进行交换。比如从第一个数开始查看每个数字做以下判断:
1、若它是最后一个数字,则结束一轮对比;
2、若它等于关键数字则跳过它;
3、若它比关键数字小,且在其左边则直接跳过;
4、若它仳关键数字小,且在右边则将它从队列中取出,并放到队首;(注意是取出放到队首,而不是与某个元素交换你的算法可能问题就絀在这个上边)
5、若它比关键数字大,且在左边则将它从队列中取出,并放到队尾;
6、若它比关键数字大且在右边,则直接跳过
你鈳以先修改 交换的那部分,换成取出并放到队首或队尾试试应该就没问题了。