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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void main(String[] args) {
                int[] arr={67,45,9,56,34,97,45,18,4,78,90,345,54,2,34,98};
                //冒泡排序法 从小到大
                for (int i = 0; i < arr.length-1; i++) {
                        for (int j = 0; j < arr.length-1-i; j++) {   //减i是什么意思啊
                                if(arr[j]>arr[j+1]){
                                        int temp=arr[j];
                                        arr[j]=arr[j+1];
                                        arr[j+1]=temp;
                                }
                        }
                }

8 个回复

正序浏览
一楼正解,必须先理解冒泡原理
回复 使用道具 举报
bolt 中级黑马 2016-2-16 12:49:38
7#
我也要当高级黑马
回复 使用道具 举报
boboyuwu 发表于 2016-2-10 22:04
为什么要减i  你要理解冒泡拍排序的思想, 你想一下比如{3,2,5} 第一次比较: 3跟2比较,2跟5比较,这样比较互 ...

恩恩,理解了,谢谢
回复 使用道具 举报
排完序的就不用在排序了
回复 使用道具 举报
外层执行一次后,有一个最大值就找出来了,内层循环自然要少一次...外层执行俩次后有俩个最大值找出来了,内层循环自然可以少俩次,,,所以依次类推
回复 使用道具 举报
哈哈刚好我最近把这块学通了。我是这么理解的 冒泡排序法第一圈最值出现在最后,到第二圈比较时第一圈出现在最后的最值将无需参加比较,以此后推每比完一圈就少比较一个元素 也即有y<arr.length-i

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
为什么要减i  你要理解冒泡拍排序的思想, 你想一下比如{3,2,5} 第一次比较: 3跟2比较,2跟5比较,这样比较互换之后,最大或者最小的是不是都跑到最后一个位置了第一次比较之后变成了{2,3,5}  是不是说最后一个就不用参与比较了,依次类推,每次相互比较之后最后一个数都不用比较了,j代表每次比较多少次,所以每次都要减1哦

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马