黑马程序员技术交流社区

标题: 关于算法我写的冒泡排序 [打印本页]

作者: 18230343363    时间: 2015-7-21 01:20
标题: 关于算法我写的冒泡排序
这是我写的冒泡法:
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]+"");
                }                                                       
        }
}

作者: 许庭洲    时间: 2015-7-21 09:34
值得学习ing!
作者: 嘟嘟嘟嘟嘟    时间: 2015-7-21 10:59

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

恩恩 有道理 可以任意数字排序了
作者: 18230343363    时间: 2015-7-21 12:36
许庭洲 发表于 2015-7-21 09:34
值得学习ing!

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

恩恩 这样就相当于封装了代码更加灵活
作者: 王文辉    时间: 2015-7-21 17:59
同学,你写的方法有问题吧,首先你的这个写的不是冒泡排序,要先搞清选择和冒泡排序的原理
这个是冒泡排序:
//冒泡排序
        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;
                                }
                        }
                }
        }
作者: 陈建民1    时间: 2015-7-21 18:05
同意楼上。。
作者: Howie    时间: 2015-7-21 21:08
冒泡拍寻是基础,很重要,加油
作者: 句子    时间: 2015-7-21 21:38
同意王文辉
作者: gongyanfa123    时间: 2015-7-21 21:41
多种排序方式,冒泡是其中的一种,不过楼主可以用其他方式试试。不过这个看完之后学习了。。
作者: Howie    时间: 2015-7-22 22:14
冒泡冒泡
作者: 人造番茄    时间: 2015-7-22 23:10
前来学习一番
作者: 小城青年    时间: 2015-7-22 23:17
恩恩,数组可以放在外面!
作者: umbriel    时间: 2015-7-22 23:21
再巩固下。。。。。。。。。。




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