[已解决] 以某一元素为中心向左向右搜索的问题

[复制链接]
wooodl 发表于 2016-8-5 13:17:13
现有一数列:S=[1:N];欲以其中某一元素n0为中心,以步长为1,向左向右搜索,当某一方向搜索到头时,则停止此方向搜索,只进行另一方向搜索。例如:N=10;n0=4时,搜索结果应该是:[4,3,5,2,6,1,7,8,9,10];当N=10,n0=7时,搜索结果为:[7,6,8,5,9,4,10,3,2,1],
求各位达人帮帮忙,多谢了!!!

最佳答案


atpalain 发表于 2016-8-5 13:58:51
可以尝试如下程序:
  1. clear
  2. clc

  3. N = 10;
  4. S = 1:N;
  5. lenS = length(S);
  6. n0 = randi(lenS);

  7. i = 1;
  8. l = n0;
  9. r = n0;
  10. SOut = n0;
  11. while((l > 1) || (r < lenS))
  12.     if(mod(i,2))
  13.         l = l - 1;
  14.         if ( l>=1)
  15.             SOut = [SOut l];
  16.         end
  17.     else
  18.         r = r + 1;
  19.         if (r <= lenS)
  20.             SOut = [SOut r];
  21.         end
  22.     end
  23.     i = i + 1;
  24. end
  25. SOut
复制代码


运行结果:
n0 =

     5


SOut =

     5     4     6     3     7     2     8     1     9    10
回复此楼

2 条回复


atpalain 发表于 2016-8-5 13:58:51
可以尝试如下程序:
  1. clear
  2. clc

  3. N = 10;
  4. S = 1:N;
  5. lenS = length(S);
  6. n0 = randi(lenS);

  7. i = 1;
  8. l = n0;
  9. r = n0;
  10. SOut = n0;
  11. while((l > 1) || (r < lenS))
  12.     if(mod(i,2))
  13.         l = l - 1;
  14.         if ( l>=1)
  15.             SOut = [SOut l];
  16.         end
  17.     else
  18.         r = r + 1;
  19.         if (r <= lenS)
  20.             SOut = [SOut r];
  21.         end
  22.     end
  23.     i = i + 1;
  24. end
  25. SOut
复制代码


运行结果:
n0 =

     5


SOut =

     5     4     6     3     7     2     8     1     9    10
回复此楼

wooodl 发表于 2016-8-6 12:43:36
atpalain 发表于 2016-8-5 13:58
可以尝试如下程序:

太帅了!!!非常好!!!非常感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表