逆序对:对于数组中两个位置的元素,具有性质但是
的序偶
。例如,1,4,5,2,3中有4个逆序对,是(4,2),(4,3),(5,2),(5,3),这就是插入排序执行的交换次数,因为每次交换两个顺序不对的元素恰好消除一个逆序对,最终排序好的数组没有逆序对,插入排序的时间就是
,其中
是逆序对的数量,
是遍历的时间,若数组是排序的,那么时间就是
定理:N个互异数的数组的平均逆序数是
定理:通过交换相邻元素进行排序的任何算法平均时间都是
因此,想要突破的时间界,一定要一次交换消除很多逆序对,比如若将一个很大的数交换到后面,那么一次就消除了很多逆序对