java 执行效率优化 递归

quanwe 2016-05-19 09:46:00

for(String str1:list){
for(String str2:list){
for(String str3:list){
for(String str4:list){
for(String str5:list){
for(String str6:list){
for(String str7:list){
for(String str8:list){
str=str1+str2+str3+str4+str5+str6+str7+str8;
现在要做的就是str遍历str1 2345678

如果有n怎么办?

谁能优化或者递归? 效率要求最快的分最高
...全文
430 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rencht 2016-05-21
  • 打赏
  • 举报
回复
引用 7 楼 bree06 的回复:
相信我,你的方法已经是最优的了. 时间复杂度是n (这里的n=length1 + length2 + length3...+length8), 没有多余的遍历或者判断一次都没有.
第一次听说多重循环的复杂度是长度相加而不是相乘的,凭什么相信你? 而且人家问是的n,不是1次、2次是给定一个次数。
MamyA 2016-05-20
  • 打赏
  • 举报
回复
建议,仅仅是建议。将迭代任务,封装成递归方式,但是以现成方式去调用,多线程执行,这样会不会效率高点呢?
rencht 2016-05-20
  • 打赏
  • 举报
回复
引用 3 楼 fengspg 的回复:
list = list1.addAll(list2).addAll(list3).addAll(list4).addAll(list5)... 再循环,或者就楼上说的,多线程执行,最后合并结果
是同一个list...全排列的问题......
Ade子夜 2016-05-20
  • 打赏
  • 举报
回复
引用 3 楼 fengspg 的回复:
list = list1.addAll(list2).addAll(list3).addAll(list4).addAll(list5)... 再循环,或者就楼上说的,多线程执行,最后合并结果
顶一下
Intboy 2016-05-20
  • 打赏
  • 举报
回复
list = list1.addAll(list2).addAll(list3).addAll(list4).addAll(list5)... 再循环,或者就楼上说的,多线程执行,最后合并结果
  • 打赏
  • 举报
回复
懵逼了
LOVEv海盗 2016-05-20
  • 打赏
  • 举报
回复
Java都没有尾递归,有N多层的话使用递归肯定效率低下。 建议看看能不能将任务分解,然后使用多线程处理。
bree06 2016-05-20
  • 打赏
  • 举报
回复
相信我,你的方法已经是最优的了. 时间复杂度是n (这里的n=length1 + length2 + length3...+length8), 没有多余的遍历或者判断一次都没有.

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧