黑马程序员技术交流社区

标题: 对任意10个数进行排序---源码 [打印本页]

作者: 编号3363    时间: 2016-3-27 01:23
标题: 对任意10个数进行排序---源码

/*

需求:对任意10个数进行排序。

思路:
1、先创建键盘录入对象;
2、创建一个一维数组存储输入的数值;
3、将逻辑判断部分封装在一个构造方法里。调用方法遍历数组,比较大小并按从小到大和从大到小的方式排序;
4、返回计算数值,输出并打印返回值。

*/

/**
版本号:1.7.0
*/


//导包。
import java.util.Scanner;


class ArrayPaixu{

        //主函数。
        public static void main(String[] args){

                Scanner sc = new Scanner(System.in);                        //创建键盘录入对象。

                int arr1[] = new int[10];                                //创建一个一维数组。

                for(int x=0; x<arr1.length; x++){                        //用for循环接收输入的数值。

                        System.out.print("尊敬的主人!\n\t您好!请输入第"+(x+1)+"个数值:");
                        arr1[x] = sc.nextInt();
                }

                //int result1 = xiaoDaPaixu(arr1);                        //调用从小到大排序的构造方法。

                //int result2 = daXiaoPaixu(arr1);                        //调用从大到小排序的构造方法。

                //System.out.println(result1+result2);                        //输入打印结果。


                xiaoDaPaixu(arr1);
                daXiaoPaixu(arr1);
        }



                public static void daXiaoPaixu(int[] arr){                        //从大到小排序的方法。

                        //用for嵌套循环遍历数组,并按从小到大的方式对数组进行排序。外循环比较大小,内循环排序。
                        for(int x=0; x<arr.length; x++){

                                for(int y=0; y<arr.length; y++){

                                        if(arr[x] > arr[y]){
                                                int temp = arr[x];
                                                arr[x] = arr[y];
                                                arr[y] = temp;
                                        }
                                }
                        }

                        //返回值不能为数组吗?
                        //return arr;

                        //打印输出结果。
                        System.out.print("\n尊敬的主人!\n\t您好!以下是这五个数值从小到大的排序结果:");

                        for(int z=0; z<arr.length; z++){

                                System.out.print(arr[z]);

                                if(z<arr.length-1)
                                        System.out.print("、");
                                else
                                        System.out.print("。");
                        }
                }




                public static void xiaoDaPaixu(int[] arr){                        //从小到大排序的构造方法。

                        //用for嵌套循环遍历数组,并按从大到小的方式对数组进行排序。外循环比较大小,内循环排序。
                        for(int x=0; x<10; x++){

                                for(int y=0; y<arr.length; y++){

                                        if(arr[x] < arr[y]){

                                                int temp = arr[x];
                                                arr[x] = arr[y];
                                                arr[y] = temp;
                                        }
                                }
                        }

                        //打印输出结果。
                        System.out.print("\n尊敬的主人!\n\t您好!以下是这五个数值从小到大的排序结果:");

                        for(int z=0; z<arr.length; z++){

                                System.out.print(arr[z]);

                                if(z<arr.length-1)
                                        System.out.print("、");
                                else
                                        System.out.print("。");
                        }
                }

}







作者: 唯爱唐嫣    时间: 2016-3-27 13:24
我去,,这么多方法,我还以为只一个方法呢
作者: 编号3363    时间: 2016-3-29 22:06
唯爱唐嫣 发表于 2016-3-27 13:24
我去,,这么多方法,我还以为只一个方法呢

嗯,不过有些方法注释掉了。
作者: dxw    时间: 2016-3-29 22:23
//返回值不能为数组吗?
//return arr;
可以啊,输出整合成一个方法更清晰
作者: 编号3363    时间: 2016-3-29 22:53
dxw 发表于 2016-3-29 22:23
//返回值不能为数组吗?
//return arr;
可以啊,输出整合成一个方法更清晰

那代码该怎么写?
望赐教!
作者: dxw    时间: 2016-3-29 23:08
本帖最后由 dxw 于 2016-3-29 23:24 编辑

import java.util.Scanner;

class ArrayPaixu {

        // 主函数。
        public static void main(String[] args) {

                Scanner sc = new Scanner(System.in); // 创建键盘录入对象。

                int arr1[] = new int[10]; // 创建一个一维数组。

                for (int x = 0; x < arr1.length; x++) { // 用for循环接收输入的数值。

                        System.out.print("尊敬的主人!\n\t您好!请输入第" + (x + 1) + "个数值:");
                        arr1[x] = sc.nextInt();
                }

                int[] result1 = xiaoDaPaixu(arr1); // 调用从小到大排序的构造方法。
                System.out.println("从小到大的排序为:");
                print(result1);
                int[] result2 = daXiaoPaixu(arr1); // 调用从大到小排序的构造方法。
                System.out.println("从大到小的排序为:");
                print(result2);

        }

        public static int[] daXiaoPaixu(int[] arr) { // 从大到小排序的方法。

                // 用for嵌套循环遍历数组,并按从小到大的方式对数组进行排序。外循环比较大小,内循环排序。
                       for (int x = 0; x < arr.length-1; x++) {
                        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;
                                }
                        }
                }

                // 返回值不能为数组吗?
                return arr;
        }

        public static int[] xiaoDaPaixu(int[] arr) { // 从小到大排序的构造方法。

                // 用for嵌套循环遍历数组,并按从大到小的方式对数组进行排序。外循环比较大小,内循环排序。
                       for (int x = 0; x < arr.length-1; x++) {
                        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;
                                }
                        }
                }
                return arr;
        }

        public static void print(int arr[]) {
                System.out.print("[");
                for (int z = 0; z < arr.length; z++) {

                        System.out.print(arr[z]);

                        if (z < arr.length - 1)
                                System.out.print(",");
                        else
                                System.out.println("]");
                }
        }
}
作者: 兵蜂    时间: 2016-3-29 23:20
可以将"for (int y = 0; y < arr.length; y++)"改为"for (int y = x; y < arr.length; y++)" ,这样好像也是没有问题的
作者: sAnChu    时间: 2016-3-30 00:05
  1. import java.util.Scanner;
  2. class Qusetion2 {

  3.         public static void main(String[] args) {       

  4.                 Scanner sc = new Scanner(System.in);
  5.                 int[] arr = new int [5];
  6.                 System.out.println("请输入是5个数******排序*******");
  7.                 for (int i = 0 ; i<arr.length ;i++ ) {
  8.                         System.out.print("请输入第"+i+"个数:");
  9.                         arr[i] = sc.nextInt();
  10.                 }
  11.                 ArrayPx(arr);
  12.                 for (int i = 0 ; i<arr.length ;i++ ) {
  13.                         System.out.print(arr[i]+" ");
  14.                 }
  15.                 sc.nextInt();

  16.         }
  17.         public static void ArrayPx(int[] arr){
  18.                    for(int x=0; x<arr.length; x++){
  19.                                 for(int y=0; y<arr.length; y++){
  20.                                                 if(arr[x] > arr[y]){
  21.                                                                 int temp = arr[x];
  22.                                                                 arr[x] = arr[y];
  23.                                                                 arr[y] = temp;
  24.                                                 }
  25.                                 }
  26.                         }
  27.         }

  28. }
复制代码

作者: 编号3363    时间: 2016-3-30 00:17
兵蜂 发表于 2016-3-29 23:20
可以将"for (int y = 0; y < arr.length; y++)"改为"for (int y = x; y < arr.length; y++)" ,这样好像也是 ...

嗯,我试试看。
作者: 编号3363    时间: 2016-3-30 00:19
sAnChu 发表于 2016-3-30 00:05

17行那个“sc.nextInt()”是用来干啥的?
作者: sAnChu    时间: 2016-3-30 00:29
编号3363 发表于 2016-3-30 00:19
17行那个“sc.nextInt()”是用来干啥的?

才学java不会中断,一闪就过,自己琢磨出来的,让程序不闪
作者: 编号3363    时间: 2016-4-3 00:36
sAnChu 发表于 2016-3-30 00:29
才学java不会中断,一闪就过,自己琢磨出来的,让程序不闪

有意思,多谢多谢!
作者: yy0328    时间: 2016-4-3 11:20
学习了  谢谢分享
作者: NeverBack    时间: 2016-4-3 15:47
学习了!!!!!!!!!!
作者: IT小笨鸟    时间: 2016-4-3 17:55
学习了!冒泡排序,哈哈哈




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