马赛克007欢迎你
htt://shexinwei.blogbus.com
http://www.cppblog.com/shexinwei
感谢大家的支持
posted on 2010-09-25 22:49 马赛克007 阅读(5190) 评论(16) 编辑 收藏 引用
这道题弱智。你的做法不是O(n)的,你内层while循环不是 O(1)由于N个数已知是 1 - N所以,排序后的结果一定是for (int i = 0; i < N; i++) data[i] = i+1;所以,和初始输入无关,而且不需要临时存储空间。 回复 更多评论
其实题目都说了是‘有N个大小不等的自然数(1--N)’,还要‘小到大排序’,那只有一种情况就是从1递增到N,所以可以不管原来如何直接输出1-N就行了 回复 更多评论
@bill gates 我的达到要求了。 关键问题是如果题目是:有n个数,都是取自1--N(n<N)时候,该如何排序了? 回复 更多评论
@马赛克007 你的代码不是O(N),根据题意,明显是一个技巧题 你有一个while循环做数据交换,其实就是一个for而已 答案1,2楼已经说明。 回复 更多评论
这道题真的好弱智阿 华为笔试也出了这个题目 回复 更多评论
博主的方法也能正确排序,不过时间复杂度肯定不是O(N)。2层循环有点多余,就是不停的把第一个值放到它自己合适的位置上,N次可以完成。当然1楼是最直接的方式,不过出题者会不会说这不是我的出题意图,哈哈。 回复 更多评论
呃,一个简单的置换。。 回复 更多评论
我在CSDN上也看过这道题的讨论,结果就是for(int i = 0;i < N; ++i){ data[i] = i+1;}...感觉有点像脑筋急转弯 回复 更多评论
汗一把,直接 for(int i = 0;i < N; ++i) a[i] = i+1; 结束了 回复 更多评论
@马赛克007你说“我的达到要求了。关键问题是如果题目是:有n个数,都是取自1--N(n<N)时候,该如何排序了? ”关键是如果题目是这样,你的程序就错了,还是失败。 回复 更多评论
@Eric 那肯定了,我的程序是针对迅雷这个题目的。 我说如果,题目是:有n个数,都是取自1--N(n<N)时候,该如何排序了?不是说我这个程序是针对这个题目的。 回复 更多评论
迅雷还是这么无聊 校招好玩么 回复 更多评论
@马赛克007 题目是:有n个数,都是取自1--N(n<N)时候,该如何排序了? 如果n个数不同的话,用位排序时间复杂度O(N),空间复杂度O(N)是最好的了! 你的解法明显没达到题目要求,你应该谦虚一点,好好看看前面的人的说法!你要是在学大学生的话看看《编程珠玑》吧!一定会有一种醍醐灌顶的感觉! 回复 更多评论
@gifty 谢谢!肯定找个时间看看。 回复 更多评论
2题,无聊 回复 更多评论
@匿名博主的时间复杂度确实是O(N)的 回复 更多评论
Powered by: C++博客 Copyright © 马赛克007