黑马程序员技术交流社区
标题:
算法设计
[打印本页]
作者:
long362144768
时间:
2013-9-25 10:30
标题:
算法设计
本帖最后由 long362144768 于 2013-9-25 22:43 编辑
1,一个数组循环左移三位(数组长度大于10),求出最优的空间开销。
作者:
抽烟男孩
时间:
2013-9-25 22:19
本帖最后由 抽烟男孩 于 2013-9-25 22:23 编辑
这是一道考研体吧,好像用的是海豚算法。空间开销是O(1),跟具体是3
以下是关键代码:
reverse(int[] arr,int from,int end){
int temp;
for(int i=from;i<from+(end - from)/2;i++){
temp = arr[i];
arr[i] = arr[end-i] ;
arr[end-i]=temp;
}
}
main(String[] args){
int[] source ={};//要移动的数组
reverse(source,0,source.length-4);
reverse(source,source.length-3,soucer.lengtj-1);
reverse(source,0,source.length-1);
}
复制代码
作者:
long362144768
时间:
2013-9-25 22:41
temp = arr[i];
arr[i] = arr[end-i] ;
arr[end-i]=temp;
这一部分可以优化,
a[i]^=a[end-i];
a[end-i]^=a[i];
a[i]^=a[end-i];
所以空间开销为0.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2