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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追风筝的少年 中级黑马   /  2016-5-26 23:53  /  562 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

冒泡排序和选择排序有什么区别?看了两三遍都没看出什么名堂,哪位大神给解答一下,谢谢了!

5 个回复

倒序浏览
排序结果是一样的,但是实现过程不是一样的
冒泡排序是每次都是相邻的元素进行比较并且交换(如果让大的值往后走),这样一来,第一轮交换后,最大的值就出现在数组的最后面(也是索引最大处),然后进行第二轮比较,不过这次比较的话最后一个元素不用比较了,因为它已经是最大的,这样每轮比较就依次出现了倒数第二大,倒数第三大的元素,循环的轮数则是数组长度length-1.
而选择排序,则是每次都固定一个索引值,比如第一次是拿索引0出的比较,依次比较,如果谁最小,那么谁就占据索引0这个位置,然后继续索引值1的位置,依次循环
其实都是循环嵌套,你好好理解原理就很简单,话说冒泡真心经典有意思
回复 使用道具 举报
就是从小到达排序,一个是将最大值从后向前放,一个是将最小值从前向后放。可以改变索引可以从大到小排序
回复 使用道具 举报
选择排序
public static void selectSort(int[] arr)
        {
                for(int x=0;x<arr.length-1;x++)
                {
                        for(int y=x+1;y<arr.length;y++)
                        {
                                if(arr[x]>arr[y])
                                        {
                                                int temp=arr[x];
                                                arr[x]=arr[y];
                                                arr[y]=temp;
                                        }
                        }
                       
                }
        }
冒泡排序
public static void bubbleSort(int[] arr)
        {
                for(int x=0;x<arr.length-1;x++)
                {
                        for(int y=0;y<arr.length-1-x;y++)
                        {
                                if(arr[y]>arr[y+1])
                                        {
                                                int temp=arr[y];
                                                arr[y]=arr[y+1];
                                                arr[y+1]=temp;
                                        }
                        }
                       
                }
        }
排序方式不一样:
选择排序是某一个角标元素与后面角标元素依次比较,选取较小的值为该角标的元素,从前往后排
回复 使用道具 举报
冒泡排序是相邻两个角标元素比较,大的角标记录较大的值,从后往前排
回复 使用道具 举报
区别还是很大啊。在多想想。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马