【发布时间】:2014-01-28 04:31:23
【问题描述】:
我已编写代码来反转具有时间复杂度的数组:O(n)。
有更快的方法吗?
我的代码:
void reverseArray(int arr[], int start, int end){
int temp;
if(start >= end)
return;
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
reverseArray(arr, start+1, end-1);
}
【问题讨论】:
-
它可能不会更快,但为什么不直接将其转换为 List 并使用 Collections.reverse()?我通常相信编写 Java 的人比我聪明,而且它使代码更具可读性。
-
我不确定它是否会运行得更快,但是你为什么不使用一个简单的 while 循环,它有两个索引,一个从左边开始,一个从右边开始,而不是递归调用你的函数?并且不要重新发明轮子,使用 apache 库中的
ArrayUtils.reverse(int[] arr)。 -
@user2336315 - 不能再同意了。在递归中,大小越大,StackOverFlowError 的概率就越高。