A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天刚听了冒泡排序法这一节课,感觉很迷茫,有点晕,请各位师兄们指教

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
每次比较相邻两位数的值 最大的就放在右边  比较到最后 就实现冒泡了  能理解中文的意思 代码就好实现了

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 马海保 于 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();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
以此比较相邻的两个元素,每次比较完毕最大的一个字跑到本轮的末尾。 目的:按从小到大排序。假设存在数假设存在数组: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;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
谢谢大家的指教,我会好好理解下的
回复 使用道具 举报
你可以这么理解, 就像做操时候排队一样, 先随便站成一对, 然后从第一个人开始,你比后面人高的话你就站到这个人后面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马