问答详情
源自:3-5 希尔排序

对数据交换这里有疑问

arrs[preIndex+gap]=arrs[preIndex]
preIndex-=gap
这个地方,把preIndex的值赋值给了preIndex+gap后,preIndex+gap本身的值岂不是没了
preIndex-=gap ,这里为何要做减法操作呢

提问者:zhanghua1068 2020-07-13 10:41

个回答

  • ghcg
    2020-07-13 20:13:43

    http://img2.mukewang.com/5f0c4e320001ea1a05950213.jpg

    不会丢失的,current记录了当前位置的值,while循环结束后这一段代码会把当前值赋值过去。循环中不是交换,你可以理解为循环把所有比当前值大的都后移了一位,循环结束后这一段代码会把空出来的位置赋值过去