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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© JYcainiao 中级黑马   /  2015-10-16 23:03  /  499 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class ArrPaixu {
//选择排序(顺序排序)
//思路   从角标为0开始  和每个比它角标值大的数进行比较  小的数放前面,大的放后面
//                首先  既然是每个数都要进行比较  就要用到for循环,并且进行比较的数角标还在变化,  需要用到嵌套for循环
//                外层的for循环控制去比较的数  内层的for循环控制被比较的数,内层的for循环角标起码都比上个大1  需要注意的是角标不要超出界限
//

        public static void ArrXuanze(int[] arr) {                        //定义一个函数命名为ArrXuanze,函数参数为int[] arr  int类型的数组
                for (int x=0; x<arr.length-1; x++) {                        //这个for是控制外循环的  arr.lenght-1一方面是为了防止x+1超标  另外一方面最后剩下一个数字不用在比较
                        for (int y=x+1; y<arr.length; y++) {                //内层for循环是控制对比的数  一次往后递增
                                if (arr[x]>arr[y]) {                                        //当前一个数比后一个数大时,需要调换位置
                                        int temp = arr[x];                                       
                                        arr[x] = arr[y];                                        //这三行是调换位置的参数
                                        arr[y] = temp;
                                }
                        }
                }
        }

//冒泡排序  
//思路   从0开始 角标相邻的两个数比较,一次类推,最大的数跑到后面   然后还从第一个数进行比较  最后一个数字不用比较
//                外层for循环控制循环次数  内层for循环控制比较的两个数  需要注意的是角标不要超出界限
        public static void ArrMaopao(int[] arr) {                        //定义一个函数  名称ArrMaopao 接收参数为 int类型的数组
                for (int x=0; x<arr.length-1; x++) {                        //定义一个for循环  用来控制循环次数 arr.length-1是因为只要循环一次  就有一个当前最大数被放到最后
                        for (int y=0; y<arr.length-x-1; y++) {                //定义一个内存for循环  用来控制比较的两个数  一次递增   也是循环一次就少比较一个数  并且数组最后一个数不需要在比较 所以出现了 arr.length-x-1
                                if (arr[y]>arr[y+1]) {                                        //当前一个数比后一个数大时,需要调换位置
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];                                        //这三行是调换位置的参数
                                        arr[y+1]=temp;
                                }
                        }
                }
        }
       
       
//数组的遍历
        public static void ArrBl(int arr[]) {                //定义一个函数 起名为ArrBl  输入一个int类型的数组
                System.out.print("[");                                        //数组开始标志[
                for (int x=0; x<arr.length; x++) {                //for循环  让角标从0递增到最后一位
                        if (x!=arr.length-1) {                                //为了让打印数组美观,数组最后一个数字后面不带“,”  进行角标的判断
                                System.out.print(arr[x]+",");        //当角标不是最后一个时  打印数字+“,”
                        }
                        else
                                System.out.print(arr[x]);                //当角标为最后一个数时,打印数字  
                }
                System.out.print("]");                                        //数组结束时打印]
                System.out.println();
        }

//定义一个主函数  用来调用其他函数
        public static void main(String[] args) {
                int arr[]={8,7,6,5,44,87,26,1,22,35,4,5,6};                //定义一个数组 arr
                System.out.println("排序前");
                ArrBl(arr);                                                                                //调用遍历函数  打印数组的内容
                ArrXuanze(arr);                                                                        //调用选择排序  对数组进行由小到大的排序
                System.out.println("选择排序后");
                ArrBl(arr);                                                                                //调用遍历函数   打印排列后的数组
               
                int brr[]={8,7,6,5,44,87,26,1,22,35,4,5,6};                //定义一个数组 arr
                System.out.println("排序前");
                ArrBl(brr);                                                                                //调用遍历函数  打印数组的内容
                ArrMaopao(brr);                                                                        //调用冒泡排序  对数组进行由小到大的排序
                System.out.println("排序后");
                ArrBl(brr);                                                                                //调用遍历函数   打印排列后的数组

        }
}

7 个回复

倒序浏览
顶起...........
回复 使用道具 举报
你知道冒泡和选择排序那个更更好么???
回复 使用道具 举报
好贴,困扰多日的问题终于得到解答!!!
回复 使用道具 举报
JYcainiao 来自手机 中级黑马 2015-10-18 18:04:13
报纸
SylvanaswindMX 发表于 2015-10-16 23:19
你知道冒泡和选择排序那个更更好么???

应该是冒泡吧,计算机算的快,相近比较,不做无用功
回复 使用道具 举报
怎么用StringBuffer做遍历?上个帖
回复 使用道具 举报
小鹿 中级黑马 2015-10-19 09:51:33
7#
复习复习!
回复 使用道具 举报
LLLLL 中级黑马 2015-10-19 10:40:53
8#
66666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马