有一个外部整数数组,您可以在 O(1) 时间内对其执行以下操作。
- get(int i) - 返回外部数组中索引“i”处的值。
- reverse( int i, int j) - 返回索引位置 i 和 j(包括 i 和 j)之间的数组的反转。
反向示例:考虑一个数组 {1,2,3,4,5}。reverse(0,2) 将返回 {3,2,1,4,5},reverse(1,4) 将返回 {1,5,4,3,2}。
编写代码对外部数组进行排序。提及您的代码的时间和空间复杂度。
显然我们可以使用快速排序或归并排序在 nlogn 中进行排序。但是考虑到风景,我们能做得更好吗?