【答案解析】[解析] 所有待排序的数据记录的排序码都相等,可按照数据初始排列已经有序的情况来分析。按照本书所给算法:对于直接插入排序,它的排序码比较次数和数据移动次数受数据的初始排列影响,每趟只比较1次,做n-1趟,排序码比较次数总共为n-1,数据移动次数为0。对于冒泡排序,它的排序码比较次数和数据移动次数也受数据的初始排列影响,只比较一趟,排序码比较次数n-1,数据移动次数0。对于简单选择排序,它的排序码比较次数不受数据的初始排列影响,比较n-1趟,排序码比较次数为n(n-1)/2;但数据移动次数受数据的初始排列影响,为0。堆排序情况比较复杂,在siftDown算法中,每个结点最多比较2次(横向1次、纵向1次),移动2次(搬到工作单元又搬回来),所以在形成初始堆时,总共

次排序码比较,

次数据移动;在堆排序时,做n-1次对调和重新形成堆,每次对调做3次数据移动,最多做(n-1)×2次排序码比较,(n-1)×(3+2)次数据移动。综合以上,堆排序的排序码比较次数最多

,数据移动次数最多为
