黑马程序员技术交流社区

标题: int数组冒泡排序法 [打印本页]

作者: 地狱里的帅灵魂    时间: 2015-8-21 22:32
标题: int数组冒泡排序法
package lianxi;
/*
* 数组冒泡排序法
* 冒泡排序是通过每相邻两个元素对比,把较大的数往后放
*
* */

public class MaoPaoPaiXu {
        public static void main(String[] args) {
                //定义一个int数组
                int[] arr={4,3,2,1,9,8,7,6,5};
                //调用遍历数组查看数组的排列顺序
                BianLiShuZu(arr);
                //for外循环由arr.length-1来决定对比几遍
                for (int j = 0; j < arr.length-1; j++) {
                       
                        //for内循环
                        for (int i = 0; i < arr.length-1-j; i++) {//-j是为了提高程序的效率,可以不减
                                //定义一个中间变量用来转换元素
                                int temp;
                                //if语句判断前一个数是否大于后一个数,如果大于就调换
                                if (arr[i]>arr[i+1]) {
                                        temp=arr[i];
                                        arr[i]=arr[i+1];
                                        arr[i+1]=temp;
                                }
                        }
                }
                //调换完后再遍历数组看是否完成任务
                BianLiShuZu(arr);
               
        }
        //遍历数组方法
        private static void BianLiShuZu(int[] arr) {
                for (int x = 0; x < arr.length; x++) {
                        System.out.print(arr[x]);
                }
                System.out.println();
        }
}



作者: 地狱里的帅灵魂    时间: 2015-8-21 22:39
当然,还有更简单的方法。
java给我们提供了一个很好用的方法,我们只需要调用即可。Arrays.sort(arr);
package lianxi;

import java.util.Arrays;

/*
* 数组冒泡排序法
* 冒泡排序是通过每相邻两个元素对比,把较大的数往后放
*
* */

public class MaoPaoPaiXu {
        public static void main(String[] args) {
                //定义一个int数组
                int[] arr={4,3,2,1,9,8,7,6,5};
                //调用遍历数组查看数组的排列顺序
                BianLiShuZu(arr);

                Arrays.sort(arr);
                BianLiShuZu(arr);
               
               
        }
        //遍历数组方法
        private static void BianLiShuZu(int[] arr) {
                for (int x = 0; x < arr.length; x++) {
                        System.out.print(arr[x]);
                }
                System.out.println();
        }
}

是不是更简单了呢

作者: 小柒    时间: 2015-8-21 22:47
好好学习吧。

作者: helloxiaoyu    时间: 2015-8-21 22:57
努力,加油
作者: yangkai69    时间: 2015-8-21 23:02
很好很强大。
作者: 何时指点江山    时间: 2015-8-21 23:09
写的很好啊,但是只要理解思想就好,在实际开发中不会用这种方法的
作者: wyd1    时间: 2015-8-21 23:49
好像有问题啊
作者: zlsucceed    时间: 2015-8-22 00:28
package cn.caxt;

public class PaiXu {
public static void main(String[] args) {
        int[] arr={1,3,44,5,63};
        for (int i = 0; i < arr.length-1; 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 x : arr){
                System.out.println(x);
        }
}
}
作者: zlsucceed    时间: 2015-8-22 00:30
/*列题: 对数组  23, 33 ,32 .63,24从小到大的顺序排列一下。
* 思路: A: 通过分析,我用第一个和第二个比,拿出大的放到左边,然后拿第二个和第三个比
*     B:然后写一个方法用两个for循环,外循环控制次数,内循环控制比较的过程
*     C:第一次,所有元素都参与比较,也就是0个元素不参与。 第二次,有1个元素不用参与。 第三次,有2个元素不用参与
* */
package cn.caxt;

import java.util.Arrays;

public class MaoPaoPaiXu {
        public static void main(String[] args) {
                //这是要排序的数组
                int[] arr={23,33,32,63,24};
                //对排序前的数组遍历
//                System.out.print("[");
//                for (int i = 0; i < arr.length; i++) {
//                        System.out.print(arr[i]+"\t");
//                }
//                System.out.println("]");
                System.out.println("-----------------------");
                BubbleSort(arr);
                //Arrays.sort(arr);//次方法是直接排序
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i]+"\t");
                }
        }

        //创建一个排序的方法,没有返回值
         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++)//-1是为了防止索引越界;-x是减少每次比较的次数
                         {
                                if(arr[y]>arr[y+1])
                                {
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];
                                        temp=arr[y+1];
                                       
                                }
                        }
                 }
                 
         }

}
//上面的是选择排序,下面的这个是冒泡,可以改进用加强for循环来遍历,这样看起来更清楚,明了

作者: 地狱里的帅灵魂    时间: 2015-8-22 21:31
何时指点江山 发表于 2015-8-21 23:09
写的很好啊,但是只要理解思想就好,在实际开发中不会用这种方法的

嗯,我们在初级阶段,现在只能做些这些
作者: 地狱里的帅灵魂    时间: 2015-8-22 21:32
wyd1 发表于 2015-8-21 23:49
好像有问题啊

什么问题,说来一块解决
作者: 文景    时间: 2015-8-22 22:21
我只知道是双层for循环
作者: 弄啥嘞。    时间: 2015-8-22 22:30
貌似调用的好简单。学会了以后省事很多了。

作者: 地狱里的帅灵魂    时间: 2015-8-24 20:10
弄啥嘞。 发表于 2015-8-22 22:30
貌似调用的好简单。学会了以后省事很多了。

对的,只需要调用就行,方法早就写好了的
作者: fjb0902    时间: 2015-8-24 20:33
思想&方法很重要,
作者: 地狱里的帅灵魂    时间: 2015-8-24 20:35
fjb0902 发表于 2015-8-24 20:33
思想&方法很重要,

敲多了,思路自然而然的就有了
作者: 地狱里的帅灵魂    时间: 2015-8-24 20:36
文景 发表于 2015-8-22 22:21
我只知道是双层for循环

没事,慢慢学




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