黑马程序员技术交流社区

标题: 冒泡排序 [打印本页]

作者: lcl    时间: 2014-7-30 07:54
标题: 冒泡排序
本帖最后由 lcl 于 2014-8-4 16:55 编辑

用一段代码做出冒泡排序,最好能有详细的注释
作者: 蔡爽    时间: 2014-7-30 07:59
class ArrayTest1
{
        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++)
                        {
                           if(arr[y]>arr[y+1])
                             {
                                int temp=arr[y];
                                     arr[y]=arr[y+1];
                                arr[y+1]=temp;
                              }
                               
                        }
                       
                }
               
        }
        public static void main(String[] args)
        {
                int[] arr={5,1,6,4,2,8,9};
                bubbleSort(arr);
                printArray(arr);
        }
}
作者: 掌柜的--刘饮    时间: 2014-7-30 08:19
冒个泡!!!
作者: masai158    时间: 2014-7-30 08:20
我 也来 冒个泡
作者: 阿磊    时间: 2014-7-30 08:22
冒泡冒泡。。。
作者: 刘沙    时间: 2014-7-30 08:35
冒个泡  嘿嘿
作者: vaqh    时间: 2014-7-30 08:38
同来冒泡
作者: 依然超级赛亚人    时间: 2014-7-30 08:46
本帖最后由 依然超级赛亚人 于 2014-7-30 09:06 编辑

D:\传智播客\讲课视频以及PPT\day14(StringBuffer,Arrays)\code
冒泡排序的原理:相邻元素两两比较,大的往后排。第一次比较完成后(内层for循环执行完毕),最大值在最后边。按照这种规律,次大值以及后面的值就都自动排序完毕了。

public class ArrayDemo {
        public static void main(String[] args) {
                int[] arr = { 24, 69, 80, 57, 13 };//定义了一个无序数组
               
               //冒泡排序最核心的部分:内层循环将第一个元素依次和后面的               //数比较使最大值往后排,外层循环重复这样的比较,直至所有数排序完毕。
                for (int y = 0; y < arr.length - 1; y++) {
                        for (int x = 0; x < arr.length - 1; x++) {
                                if (arr[x] > arr[x + 1]) {
                                        int temp = arr[x];
                                        arr[x] = arr[x + 1];
                                        arr[x + 1] = temp;
                                }
                        }
                }
                printArray(arr);

        }
       //定义一个方法,封装冒泡排序的代码(为了使程序复制过去可以直接运行我            //才把它和主方法一起加的,楼主只看核心部分就行)
        public static void printArray(int[] arr) {
                for (int i = 0; i < arr.length; i++) {
                        if (i == arr.length - 1) {
                                System.out.println(arr);
                        } else {
                                System.out.print(arr + ",");
                        }

                }
        }
}



//结合我们老师画的原理图可能会更好理解,但我不太会传图片,只把路径传上去(最上面,还非故意的泄露了信息,呵呵),还得赶时间,今天先不传了,楼主需要的话再留言。




作者: 黑马-蒋振军    时间: 2014-7-30 09:04
二楼正解,可惜printArray(arr)未定义
作者: lcl    时间: 2014-7-30 09:06
都来冒泡吧,欢迎冒泡
作者: 席杰    时间: 2014-7-30 09:08
冒个大泡。呵呵
作者: 侯岩卿    时间: 2014-7-30 09:21
本帖最后由 侯岩卿 于 2014-7-30 09:23 编辑

//冒泡排序
        //即是把每两个相邻的元素进行比较,判断是否进行交换
        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++)//-x:让每一次比较的元素减少,-1:避免角标越界。
                        {
                                if(arr[y]>arr[y+1])
                                {
                                        //定义第三方变量,通过角标置换的方法来实现数组中元素位置的交换。
                                        int temp = arr[y];
                                        arr[y] = arr[y+1];
                                        arr[y+1] = temp;
                                }
                        }
                }
        }
       //把冒泡这个功能定义在了一个函数内,只要调用并传入一个int型数组就可以用

作者: 张周飞    时间: 2014-7-30 09:32
                 //冒泡排序算法
        // 25 65 12 5 68 15 98
      // 25 12 5 65 15 68 98
       //  12 5 25 15 65 68 98
       //  5 12 15 25 65 68 98
          int[] num={25,65,98,12,5,68,15};
           for(int i=0;i<num.length-1;i++){
                      for(int j=0;j<num.length-i-1;j++){
                   if(num[j]>num[j+1]){
                                            int temp=num[j];
                                            num[j]=num[j+1];
                        num[j+1]=temp;
                                   }
                          
                          }
            }

        //Arrays.sort(num);//另一种方法排序、搞定。上面需要加一个工具类{ import java.util.Arrays;}
            for(int i=0;i<num.length;i++){
            System.out.println("冒泡排序之后的这个数组的顺序的是:"+num);
        }
                 
               






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