日期:2014-05-17  浏览次数:20911 次

只循环一次的冒泡排序法---求解
如题,是否只循环一次就能实现冒泡排序,一般情况下都是需要嵌套循环2次的

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


求大神祝我证道

------解决方案--------------------
没有只循环一次就能实现完全排序的算法.
在冒泡法中只循环一次只能找到最大或最小数.
------解决方案--------------------
你是搞研究还是做项目?如果是搞研究,不可能。如果是做项目,这样最方便了:
int[] temps = { 10, 22, 4, 50, 100, 65, 56, 98, 105, 200, 900, 1 };
List<int> l = new List<int>(temps);
l.Sort();
temps = l.ToArray();

------解决方案--------------------
這樣算嗎?
int[] temps = { 10, 22, 4, 50, 100, 65, 56, 98, 105, 200, 900, 1 };
            for (int i = 1; i < temps.Length; i++)
            {
                int a = temps[i-1];
                if (temps[i] < temps[i - 1])
                {
                    temps[i - 1] = temps[i];
                    temps[i] = a;
                    i = 0;
                }
            }
其實與兩層迴圈意思是一樣的,只是用一層來重覆比較。可以嗎?
------解决方案--------------------
木有听说循环一遍的  即使有的话 通用性或者效率 可定也是很操蛋的 做研究的经常会搞这种没有用的东西 
------解决方案--------------------
没有一次循环的冒泡
------解决方案--------------------
呵呵,O(n)时间复杂度的排序算法,可以震惊世界呢。
------解决方案--------------------

冒泡、一次循环,听起来就有点不对。。。
------解决方案--------------------

如果LZ是要找排序算法。。。

我感觉快速排序算法不算递归看上去符合LZ的描述点
------解决方案--------------------
http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95
------解决方案--------------------
这个是可以有的。
这里的一次循环并不是说时间复杂度就是O(n),冒泡排序的时间复杂度肯定是O(n2)的。
这道题考的只是一个编程技巧而已。
一直想写篇博客来着,不过没时间写。

        //two loops
        static void Sort(int[] array)
        {
            int length = array.Length;
            for (int i = 0; i < length - 1; i++)