只循环一次的冒泡排序法---求解

zmm12 2012-03-14 07:36:04
如题,是否只循环一次就能实现冒泡排序,一般情况下都是需要嵌套循环2次的

int[] temps = { 10, 22, 4, 50, 100, 65, 56, 98, 105, 200, 900, 1 };


求大神祝我证道
...全文
1794 49 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
低丶调 2014-08-21
  • 打赏
  • 举报
回复
引用 29 楼 zydcomputers 的回复:
//int[] strAry = { 1, 5, 2, 4, 9, 6, 8, 10, 20, 16, 30, 11, 11 }; //var query = // from vall in strAry // orderby vall descending // select vall; //foreach(int s in query) //{ // Response.Write(s.ToString() + "-"); //} Linq 也 可以. . .....
怎么还搞到linq去了
nd_Ur_help 2013-01-10
  • 打赏
  • 举报
回复
没玩过一层的。
lafield 2012-12-12
  • 打赏
  • 举报
回复
int bubble_sort(char * array, int n) { int i=0; char temp; int count = n; while(count--) { if(*(array+i) > *(array+i+1)) { temp = *(array+i); *(array+i) = *(array+i+1); *(array+i+1) = temp; } i++; if(i == n-1) { count = --n; i = 0; } } }
threenewbee 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 z81434362 的回复:]
别说冒泡 我就没听说过O(n)的排序算法
[/Quote]

很多人喜欢投机取巧地学习,比如有人说看几重循环就是复杂度。
threenewbee 2012-03-21
  • 打赏
  • 举报
回复
如果要卖弄一些“技巧”,并且非要说这样就是一个循环,我可以给出通用解法。但是如果你的老师把这个看成什么值得拿来玩弄的东西,我只能说他很低级。

for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
Console.WriteLine("i = {0}, j = {0}", i, j);

=>
for (int i = 0, j = 0; i < 10; i += (((j = (++j % 10)) == 0) ? 1 : 0))
Console.WriteLine("i = {0}, j = {0}", i, j);
裸奔在上海 2012-03-21
  • 打赏
  • 举报
回复
纠结这些,还不如去多做点实际的事情。
裸奔在上海 2012-03-21
  • 打赏
  • 举报
回复
不要在这种问题上面纠结了,没意思,搞点有意义的事情吧。编程不仅仅是有循环。
threenewbee 2012-03-21
  • 打赏
  • 举报
回复
冒泡排序只循环一次,这可以用两个字回答:扯淡。
O西瓜 2012-03-21
  • 打赏
  • 举报
回复
如果你是想问技巧的,这个是可以有的
如果你是想把复杂度降为O(n),这个全世界的人都在盼着,如果你能研究出来,将名留千古,永载史册。
muyi66 2012-03-21
  • 打赏
  • 举报
回复
也许作为一种思维训练还是可以的。作为编程技巧的话,这样的做法有害无益。
Code従業員 2012-03-21
  • 打赏
  • 举报
回复
7楼、32楼,世界没震惊,倒是雷到我了。箱排序和基数排序算啥?
Code従業員 2012-03-21
  • 打赏
  • 举报
回复
插入排序不用多次比较是真的,每次将新的数放到刚好大于它的数前边
这个算是数据结构里边最基本的排序方法了,类似双向链表排序吧。
Code従業員 2012-03-21
  • 打赏
  • 举报
回复
不好意思,取数算一次循环啊。。。比较又一次。。。
好像还是两次。
蓝风遥遥 2012-03-21
  • 打赏
  • 举报
回复
不会吧,冒泡一次循环只得到一个最大的值或者最小的数么?
Code従業員 2012-03-21
  • 打赏
  • 举报
回复
你可以用 插入排序嘛。。。一次循环可以排好了。
zmm12 2012-03-21
  • 打赏
  • 举报
回复
我声明一下 为什么会有这种想法 ,我是参加一次技术讲座时 无意听到的,因当时也不认识对方,而且有事急着走,在公交车上好好思考了很久,技术有限,回去后冥思苦想、百度、谷歌 大神 都拜访过,也没找到特别有价值的,只能来CSDN 请教大能了,是否有最终答案已经不重要了,只是想看看大家的思路
zmm12 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 microsoftcenterofhn 的回复:]

这个是可以有的。
这里的一次循环并不是说时间复杂度就是O(n),冒泡排序的时间复杂度肯定是O(n2)的。
这道题考的只是一个编程技巧而已。
一直想写篇博客来着,不过没时间写。
C# code

//two loops
static void Sort(int[] array)
{
int length = arra……
[/Quote]

抱歉 这种 算不上
zhongxiaobing 2012-03-21
  • 打赏
  • 举报
回复
LZ 当用递归方法时,有可能可以用一次循环可以排序,但是这里的一次循环是只写一个循环语句而以,理论上一个排序用一次循环来实现是不正常的
  • 打赏
  • 举报
回复
11楼的方法学习了。
不要一味拘泥于“实用性”。如果只知道3楼的写法,充其量只是熟悉api的用法而已。11楼的方法看似无用,却能拓展思维。长远来说,这更重要
惊喜不断 2012-03-19
  • 打赏
  • 举报
回复
三楼 四楼的 方法 都可以,,
加载更多回复(27)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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