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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lcl 中级黑马   /  2014-7-30 07:54  /  1237 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lcl 于 2014-8-4 16:55 编辑

用一段代码做出冒泡排序,最好能有详细的注释

12 个回复

倒序浏览
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);
        }
}
回复 使用道具 举报 1 0
冒个泡!!!
回复 使用道具 举报
我 也来 冒个泡
回复 使用道具 举报
冒泡冒泡。。。
回复 使用道具 举报
冒个泡  嘿嘿
回复 使用道具 举报
vaqh 中级黑马 2014-7-30 08:38:54
7#
同来冒泡
回复 使用道具 举报
本帖最后由 依然超级赛亚人 于 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 + ",");
                        }

                }
        }
}



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



回复 使用道具 举报
二楼正解,可惜printArray(arr)未定义
回复 使用道具 举报
lcl 中级黑马 2014-7-30 09:06:23
10#
都来冒泡吧,欢迎冒泡
回复 使用道具 举报
冒个大泡。呵呵
回复 使用道具 举报
本帖最后由 侯岩卿 于 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型数组就可以用
回复 使用道具 举报
                 //冒泡排序算法
        // 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);
        }
                 
               

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