黑马程序员技术交流社区

标题: 自学基础课程,冒泡排序法不明白,请师兄们指教,谢谢 [打印本页]

作者: 王彦伟    时间: 2012-12-9 16:48
标题: 自学基础课程,冒泡排序法不明白,请师兄们指教,谢谢
今天刚听了冒泡排序法这一节课,感觉很迷茫,有点晕,请各位师兄们指教
作者: Jam    时间: 2012-12-9 19:45
每次比较相邻两位数的值 最大的就放在右边  比较到最后 就实现冒泡了  能理解中文的意思 代码就好实现了
作者: 马海保    时间: 2012-12-9 19:55
本帖最后由 马海保 于 2012-12-9 20:20 编辑

int[] scores = new int[5];   //成员数组
            int i, j;                   //循环变量
            int temp;                    //临时变量
            Console.WriteLine("请输入5个学员的成绩:");
            for (i = 0; i < 5; i++)
            {
                Console.WriteLine("请输入第{0}个学员的成绩:", i+1);
                scores = int.Parse(Console.ReadLine());   //类型转换
            }
            //开始排序--使用冒泡排序
            for (i = 0; i < scores.Length - 1 ; i++)
            {
                //将最大的元素交换到最后
                for (j = 0; j < scores.Length - 1-i; j++)
                {
                    if (scores[j] > scores[j + 1])
                    {
                        //交换元素
                        temp = scores[j];
                        scores[j] = scores[j + 1];
                        scores[j + 1] = temp;
                    }
                }
            }

           for (i = 0; i < 5; i++)
            {
                Console.WriteLine(scores);
            }
           Console.ReadLine();


作者: 邵帅    时间: 2012-12-9 19:55
以此比较相邻的两个元素,每次比较完毕最大的一个字跑到本轮的末尾。 目的:按从小到大排序。假设存在数假设存在数组:10,9,8, 7, 6, 5,4,3, 2, 1
第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。
10和9比较的结果就是,9在前,10在后;
然后10和8比较的结果,8在前,10在后;
以此类推,第一轮比较之后的结果是:9, 8, 7, 6 5, 4, 3, 2 1, 10
经过第一轮比较,最大的元素跑到了最后一个,所以第二轮比较,最后一个元素不需要进行比较了。  
第二轮还是从索引0和1开始比较,只是不许要比较最后一个了,算法还是一样的。第三轮、第四轮以此类推。
排序之后的结果:1, 2, 3, 4, 5,6, 7, 8, 9, 10;
作者: 王彦伟    时间: 2012-12-9 20:07
谢谢大家的指教,我会好好理解下的
作者: 汪磊    时间: 2012-12-9 22:22
你可以这么理解, 就像做操时候排队一样, 先随便站成一对, 然后从第一个人开始,你比后面人高的话你就站到这个人后面




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2