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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 18230343363 中级黑马   /  2015-7-21 01:20  /  574 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我写的冒泡法:
public class Msort{

        public static void main(String[] args)
        {
                Msort s=new Test3();
                s.sort();               
        }
       
        //定义一个sort()方法,采用冒泡排序,数字按照由大到小排序
        public void sort()
        {
                //定义一个数组
                int arr[]={-3,0,1,5,9,11,20};
                for (int i = 0; i < arr.length; i++) {
                        for (int j = i+1; j < arr.length; j++) {
                                //如果前面的值小于后面的值,则把较大的数交换到最前面
                                if (arr[i]<arr[j]) {
                                        int temp=arr[i];
                                        arr[i]=arr[j];
                                        arr[j]=temp;                                       
                                }
                        }
                }
               
                //循环输出排好序的数字
                for (int i = 0; i < arr.length; i++) {
                        System.out.println(""+arr[i]+"");
                }                                                       
        }
}

15 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报

最好把冒泡排序的方法单独写出来,定义数组和打印输出放到main函数里,这样方法的复用性就强很多.
回复 使用道具 举报
可以将排序函数写成public static int [] sort(int [] arr){}
传入一个数组,函数处理后返回排序后数组。
这样定义数组和打印输出可以单独封装。
回复 使用道具 举报
李峥 发表于 2015-7-21 12:07
可以将排序函数写成public static int [] sort(int [] arr){}
传入一个数组,函数处理后返回排序后数组。
...

恩恩 有道理 可以任意数字排序了
回复 使用道具 举报

谢谢 互相学习
回复 使用道具 举报
嘟嘟嘟嘟嘟 发表于 2015-7-21 10:59
最好把冒泡排序的方法单独写出来,定义数组和打印输出放到main函数里,这样方法的复用性就强很多. ...

恩恩 这样就相当于封装了代码更加灵活
回复 使用道具 举报
同学,你写的方法有问题吧,首先你的这个写的不是冒泡排序,要先搞清选择和冒泡排序的原理
这个是冒泡排序:
//冒泡排序
        public static void bubbleSort(int[] arr){
                for(int x=0;x<arr.length-1;x++){
                        for(int y=0;y<arr.length-x-1;y++){//-x是为了减少循环次数,-1是避免角标越界
                                if(arr[y]>arr[y+1]){
                                        int temp =arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                }
                        }
                }
        }
还有,你的方法有个地方需要优化:
public static void selectSort(int[] arr){
                for(int x=0;x<arr.length-1;x++){//下面y=x+1,所以这里应该x<arr.length-1;减少一次不必要的循环
                        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;
                                }
                        }
                }
        }
回复 使用道具 举报
同意楼上。。
回复 使用道具 举报
Howie 中级黑马 2015-7-21 21:08:09
10#
冒泡拍寻是基础,很重要,加油
回复 使用道具 举报
同意王文辉
回复 使用道具 举报
多种排序方式,冒泡是其中的一种,不过楼主可以用其他方式试试。不过这个看完之后学习了。。
回复 使用道具 举报
Howie 中级黑马 2015-7-22 22:14:43
13#
冒泡冒泡
回复 使用道具 举报
前来学习一番
回复 使用道具 举报
恩恩,数组可以放在外面!
回复 使用道具 举报
再巩固下。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马