1.容器中循环时判断的操作有时可以通过对容器进行特殊的处理而避免。
例如插入排序中判断是否插入在第一个元素,可以通过将最小元素放在容器初始位置而避免。归并排序中判断是否到容器尾部,可以通过在尾部加入一个比任何元素都大的元素而避免(标志关键字),也可以将容器变成bitonic(元素大小先增大后减小),然后分别从前往后,从后往前同时进行,这样到达某一段容器的结尾时,剩余一段容器的元素总比这个结尾小(因为是倒叙排列),如下所示:
原始两段数据: 1 3 5 2 4 6 8 9 bitonic后 1 3 5 9 8 7 6 4 2
左边的指针指向第一段数据的结尾5后,会指向第二段数据的结尾9,而此时第二段数据还有6,7,8,9没有排序,而9是右边数据最大的值,所以第一段的指针不会继续前进,第二段数据依次排序。避免了判断到结尾的操作。
原文:https://www.cnblogs.com/wildricky/p/15041491.html