【正确答案】
A
【答案解析】 对于选项A,堆排序的过程如下:构造最大堆,从而得到最大的元素,将最大的元素与最后一个元素交换(即取出最大的元素),然后对以根结点为首的、除最后一个元素之外的n-1个元素进行一次构造堆操作,由堆的性质可知,经过该次操作后得到的堆仍为最大堆,所以,可以继续将根结点与第n-1个结点交换,取出第二大元素……重复上述操作,直到依次取出第n-1大元素即完成了排序。所以,堆排序的时间复杂度一直都是O(nlogn),它是一种不稳定的排序算法。所以,初始数据集的排列顺序对算法的性能无影响。因此,选项A正确。
对于选项B,插入排序的平均时间复杂度为O(n^2),在序列初始有序的情况下,其时间复杂度为O(n),它是一种稳定的排序算法。因此,选项B错误。
对于选项C,冒泡排序的平均时间复杂度为O(n^2),在序列初始有序的情况下,增加交换标志flag可将时间复杂度降到O(n),它是一种稳定的排序算法。因此,选项C错误。
对于选项D,快速排序与主元的选择有关,如果选择子序列左侧第一个元素比较,那么第一个元素最好是大小居中的,以使得分成的两个子数组长度大致相等,性能才能最佳,否则,在序列初始有序的情况下,时间复杂度可能会退化到O(n^2),它是一种不稳定的排序算法。因此,选项D错误。
所以,本题的答案为A。