在您的代码里会不会在内层for循环后arr[0]的值会被重置为arr[i] 最终结果导致arr[0]的值等于最后一位元素的值

在您的代码里会不会在内层for循环后arr[0]的值会被重置为arr[i] 最终结果导致arr[0]的值等于最后一位元素的值

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

我没有很理解你的问题。


课程的代码肯定没有你的问题标题中说的这个错误。如果你认为会产生这个错误,请详细阐述为什么你觉得会产生这个错误。你可以根据你思考的这个“为什么”,设计一个小的测试用例来验证一下,看看代码实际执行的结果是怎样的?是不是会产生你想象的这个错误?如果不会,自己哪里思考错了。如果会,请把你的测试代码和相应的测试用例提供给我。


对于你说的 compareTo 的问题,首先,课程的代码中没有使用 k 这个索引,所以我不知道你具体说的是什么意思。https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures/src/master/04-Insertion-Sort/03-Insertion-Sort-Optimized/src/InsertionSort.java


但是,同理的,你完全可以根据你自己的思考,把代码修改成自己认为正确的样子,然后实际使用晓得数据测试,或者课程介绍的方式,随机生成测试用力的方式,实际运行一下,看看运行结果是否正确。如果不正确,去真正的跟踪一下,看一下结果为什么不正确。


实际根据自己的想法,去修改代码,然后去看代码的执行结果是怎样的,和自己的预期是否相符,如果不相符,自己哪里想错了,是学习算法,甚至是学习计算机专业所有领域的重要方式哦:)


继续加油!:)

  • 大学生阿哟 提问者 #1

    https://img1.sycdn.imooc.com/climg/654d7dd409778eca28801800.jpg

    2023-11-10 08:49:14
  • liuyubobobo 回复 提问者 大学生阿哟 #2

    对 arr[j] 的赋值应该在内层循环外面。课程代码参考这里(23-35 行):https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures/src/master/04-Insertion-Sort/03-Insertion-Sort-Optimized/src/InsertionSort.java

    2023-11-10 13:49:41
  • 大学生阿哟 提问者 回复 liuyubobobo #3

    https://img1.sycdn.imooc.com/climg/6550336a091e08be28801800.jpg

    之前没注意抱歉,您看 跳出内层for 循环的条件是j=0 然后执行arr[j]=t 此时arr的首位元素被重新赋值了

    2023-11-12 10:10:26
提问者 大学生阿哟 2023-11-09 20:21:32

还有一个问题就是使用compareTo的时候比较的不应该为arr[k]和arr[k-1]吗

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师