`
javaboy2006
  • 浏览: 182648 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

脑残系列之一:使用一个循环先输出奇数然后偶数

阅读更多
无意中看到csdn的一个帖子:http://topic.csdn.net/u/20081114/18/AD521288-2901-4868-8430-77A0E01AE746.html
不知道javaeyer有没有更好的算法。
        //        只允许使用一个循环 
        //        先输出1至10内的奇数 
        //        然后输出其中的偶数 
        //        结果应该是这样的 
        //        1 3 5 7 9 2 4 6 8 
        //        大家可以竭尽全力的想啊 

        //1
        StringBuffer sb1 = new StringBuffer();
        StringBuffer sb2 = new StringBuffer();
        for (int i = 1; i < 10; i++) {
            if (i % 2 != 0) {
                sb1.append(i + " ");
            } else {
                sb2.append(i + " ");
            }
        }
        System.out.println(sb1 + "" + sb2);

        //2
        for (int i = 1; i < 10; i += 2) {
            System.out.print(i + " ");
            if (i == 9) {
                i = 0;
            }
        }

分享到:
评论
26 楼 qichunren 2008-11-19  
大家再来出出这方面的题来做,希望是新一点的。,像以前在ruby版块有每周一测
25 楼 Nighthaven 2008-11-19  
很无聊的题目,如果各位上学的时候有做题的经验就知道这题肯定是在考你有没有想到用位移操作~~~~
不过大家都是java或者ruby程序员,自然不习惯向这个方面想。
24 楼 阳光晒晒 2008-11-19  
ray_linn 写道
Integer[] array = {1,2,3,4,5,6,7,8,9}; 如果有这个东西就更简单。

只要循环一半就够了,只要pop掉奇数,剩下就全是偶数。


这样可以了吧.....

class Time4Sore implements Runnable {
	int x;
	int pauseTime;

	public Time4Sore(int x) {
		this.x = x;
		pauseTime = ((x+1)%2)*1000;
	}
	public void run() {
		try {
			Thread.sleep(pauseTime);
			System.out.println(x);
		} catch(Exception e) {
			System.out.println(e);	
		}
	}
	public static  void main(String args[]) {

		Thread t = null;
		int[] array= {1,2,3,4,5,6,7,8,9} ;
		for(int i = 0 ; i < array.length;i++){
			t = new Thread(new Time4Sore(array[i]));
			t.start();
		}
		
	}
}
23 楼 ray_linn 2008-11-18  
Integer[] array = {1,2,3,4,5,6,7,8,9}; 如果有这个东西就更简单。

只要循环一半就够了,只要pop掉奇数,剩下就全是偶数。
22 楼 jasongreen 2008-11-18  
脑残题,鉴定完毕
21 楼 liusong1111 2008-11-18  
armorking 写道
请问LZ:“回”字有几种写法?


http://blog.csdn.net/cyuyanchuxue/archive/2005/12/17/554819.aspx
引用
有人研究过回字有几种写法吗?

或许是这个问题无关国计民生,听过的人大都一笑而置,也有人说“回”字有四种写法,这是孔乙己告诉我们的。对吗?当然不对,“回、囘、囬、迴(逥)、廻(廽)还有一种外‘口’内‘目’”至少这几种。前面三种是古人常用的,最后一种据传是孔乙己所知道的,中间两种则是新华字典上的,我手头的版本是1992重排本,只是没有括号中的字,想来,括号中的字和括号外面的字应该等价。(权且当我这是标准答案)

见多了批评孔乙己的迂腐,却少见人指正孔乙己的错误,“好读书,不求甚解”吗?混沌和精确是东西方文化的代表差异。而以我们一贯的二分法来看,片面强调总是不对的。结合发展才是硬道理。遗憾的是,我们大都是邯郸学步,丢了自己的大气,也没有学会人家的精确。

“回”字写法来源:

http://www.c-sf.org.tw/dyf2004/viewtopic.php?p=18750&sid=ff42d89595ce97d8e5486a731aeb2d60


http://zhidao.baidu.com/question/27788270.html?fr=qrl
引用
回字通常只有三种写法:
回、
囘〔外“冂”内“巳”〕、
囬〔“面”之下部〕。

第四种写作〔外“囗”内“目”〕(见《康熙字典·备考》),极少见。

想起了孔乙己,学的时候我们为何不问问老师,回字到底有哪四种写法呢?看看老师会不会呢?
一味的嘲笑孔的迂腐,是否淡漠了对知识的探求...


善用搜索引擎,谨防虚假广告啊~
20 楼 阳光晒晒 2008-11-18  
javaboy2006 写道
ddd 写道
buaalijie 写道
这样的算法不讨论比较好

关于这个我想通了:下雨天打孩子──闲着也是闲着

我也是在csdn上偶然看到,转到海版大家随意探讨一下。csdn上说这是一个面试题,确实有点BT。

http://blog.csdn.net/g9yuayon/archive/2008/07/20/2679202.aspx

只是用来练练脑子
我写了一个
public class SoreArry {
	public static void main(String arg[]){
		System.out.println("begin");
		Integer[] array = {1,2,3,4,5,6,7,8,9};
		System.out.println(ArrayUtils.toString(array, ""));
		Comparator c = new Comparator(){
			public int compare(Object o1, Object o2) {
				if((Integer)o1%2==0){
					return 1;
				}
				return 0;
			}			
		};
		Arrays.sort(array,c);
		System.out.println(ArrayUtils.toString(array,""));
	}

}
19 楼 ddd 2008-11-18  
ray_linn 写道
Readonly 写道
 puts (1..9).partition {|i| i.odd? }



这个puts里头偷藏了一个循环吧?翻翻源代码看看

他会说是if goto:)
不过确实用if goto改写一下的话,一个循环也不用
18 楼 ray_linn 2008-11-18  
Readonly 写道
 puts (1..9).partition {|i| i.odd? }



这个puts里头偷藏了一个循环吧?翻翻源代码看看
17 楼 javaboy2006 2008-11-18  
ddd 写道
buaalijie 写道
这样的算法不讨论比较好

关于这个我想通了:下雨天打孩子──闲着也是闲着

我也是在csdn上偶然看到,转到海版大家随意探讨一下。csdn上说这是一个面试题,确实有点BT。
16 楼 ddd 2008-11-18  
buaalijie 写道
这样的算法不讨论比较好

关于这个我想通了:下雨天打孩子──闲着也是闲着
15 楼 buaalijie 2008-11-18  
这样的算法不讨论比较好
14 楼 ddd 2008-11-18  
ray_linn 写道
ddd 写道
ray_linn 写道
for(int i=1;i<9999;i=i+2)  print i;

for(int i=2;i<9999;i=i+2)  print i;



看我这个纯加法,连%都不用,速度会不会比较快?

2个循环。


只是懒得比去拼接字符串而已。要一个循环也写得出来。

            for (int i = 1; i <= 9999; i=i+2)
            {
                System.Console.Out.Write(i);
                if (i == 9999) i = 2;
            }

这就和我写的是一回事了。
我第一个想到的就是这个
13 楼 armorking 2008-11-18  
请问LZ:“回”字有几种写法?
12 楼 ray_linn 2008-11-18  
ddd 写道
ray_linn 写道
for(int i=1;i<9999;i=i+2)  print i;

for(int i=2;i<9999;i=i+2)  print i;



看我这个纯加法,连%都不用,速度会不会比较快?

2个循环。


只是懒得比去拼接字符串而已。要一个循环也写得出来。

            for (int i = 1; i <= 9999; i=i+2)
            {
                System.Console.Out.Write(i);
                if (i == 9999) i = 2;
            }
11 楼 ddd 2008-11-18  
ray_linn 写道
for(int i=1;i<9999;i=i+2)  print i;

for(int i=2;i<9999;i=i+2)  print i;



看我这个纯加法,连%都不用,速度会不会比较快?

2个循环。
10 楼 ray_linn 2008-11-18  
for(int i=1;i<9999;i=i+2)  print i;

for(int i=2;i<9999;i=i+2)  print i;



看我这个纯加法,连%都不用,速度会不会比较快? PS:多加一个循环只是为了减少一个buffer而已;
9 楼 ddd 2008-11-18  
liusong1111 写道
ddd 写道
姜太公 写道
既然是限定在1到10之内,又何必用循环呢
print 1,3,5,7,9,2,4,6,8 

既然你一定要用循环,就来个循环
for i in range(1):
    print 1,3,5,7,9,2,4,6,8

1到10000之内呢?
print 1,3,5,7,...,9999,2,4,6,8...,9998?



先输出被3整除的,再输出不被3整除的数组呢?

算法不限制规模,而你这个更改的不是规模。
8 楼 liusong1111 2008-11-18  
ddd 写道
姜太公 写道
既然是限定在1到10之内,又何必用循环呢
print 1,3,5,7,9,2,4,6,8 

既然你一定要用循环,就来个循环
for i in range(1):
    print 1,3,5,7,9,2,4,6,8

1到10000之内呢?
print 1,3,5,7,...,9999,2,4,6,8...,9998?



先输出被3整除的,再输出不被3整除的数组呢?
7 楼 姜太公 2008-11-18  
ddd 写道
姜太公 写道
既然是限定在1到10之内,又何必用循环呢
print 1,3,5,7,9,2,4,6,8 

既然你一定要用循环,就来个循环
for i in range(1):
    print 1,3,5,7,9,2,4,6,8

1到10000之内呢?
print 1,3,5,7,...,9999,2,4,6,8...,9998?



既然要求是10以内的,咱就做个10以内的。等要做1kw内的时候,咱再考虑。

相关推荐

Global site tag (gtag.js) - Google Analytics