首页 新闻 会员 周边 捐助

关于冒泡排序的问题, 了解数据结构的进来帮忙解答一二

0
悬赏园豆:50 [已解决问题] 解决于 2013-01-09 10:39

问题:已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该数列按从小到大排序,经过一趟冒泡排序后的序列为:

答案是:28,16,34,54,62,73,60,26,43,95

 

但有些不明白,泡冒不就是把行的数据竖着放, 然后从底下开始,相邻的比较,小的往上走, 一次找出一个小的往前放. 这里说经过一趟冒泡排序,数据序列不是: 16,54,28,26,34,73,62,95,60,43吗?

但不管怎解释, 我的答案还是错的, 回来后找出教程看了, 例子

[49,38,65,97,76,13,27,49]

一趟后结果为13,[49,38,65,97,76,27,49]

我在C#里写的代码调试也是得出16,54,28,26,34,73,62,95,60,43结果.

//PaoMaoSort
        static void PaoMaoSort(int[] a)
        {
            int ex, tmp;
            for (int i = 0; i < 1; i++)
            {
                ex = 0;
                for (int j = a.Length - 1; j > i; j--)
                {
                    if (a[j] < a[j - 1])
                    {
                        tmp = a[j];
                        a[j] = a[j - 1];
                        a[j - 1] = tmp;
                        ex = 1;
                    }
                }
                if (ex >= 0)
                {
                    for (int k = 0; k < a.Length; k++)
                    {
                        Console.Write(a[k] + ", ");
                    }
                    Console.ReadLine();
                }
            }            
        }

i从0到小于1,是排一趟, 得出下面

但一个面试我的教授的答案却是28,16,34,54,62,73,60,26,43,95, 有人帮我解答一二吗?

风浪的主页 风浪 | 老鸟四级 | 园豆:2996
提问于:2013-01-09 00:07
< >
分享
最佳答案
1

你我没有验证你的排序最后对不对,我正想说冒泡是从最后一个元素开始的

54,28,16,34,73,62,95,60,26,43

第一次排序步骤:

43和26不交换 确定43

26和60交换    确定60,43

26和95交换    确定95,60,43

直到第一个元素 所以你的答案没问题

另一种顺序,就是从第一个元素开始比较直到最后一个元素结果就是你说的答案

所以两种方式都没问题,冒泡排序讲的是一种处理逻辑,但不是说起始一定要从前面或后面开始。

收获园豆:50
茂茂 | 老鸟四级 |园豆:2902 | 2013-01-09 08:46

谢谢解答,艺清楚了, 面试时一个教授说他的答案才正确, 搞得我对冒泡都怀疑, 当时也不问他深入.

风浪 | 园豆:2996 (老鸟四级) | 2013-01-09 10:39
其他回答(2)
0

声明:我只是菜鸟,你内一列数冒泡从小到大排难道不是16,26,28,34,43,54,60,62,73,95么?还是说我对冒泡排序的理解是错的?

动感超人z | 园豆:1 (初学一级) | 2013-01-09 01:12

原来是经过一趟冒泡排序 - -   我眼瞎了   不好意思

支持(0) 反对(0) 动感超人z | 园豆:1 (初学一级) | 2013-01-09 09:18
0

楼上 正解

Qlin | 园豆:2403 (老鸟四级) | 2013-01-09 08:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册