黑马程序员——Java中的几种排序算法

——- android培训java培训、期待与您交流! ———-

class ArrTest{
         public static void main (String[]args)
         {
                 int arr []= new int [] {3,4,6,8,9,1};
                 int max=getMax(arr);
                        //int max=getMax(  new int [] {3,4,6,8,9,1});//注意这里:其实这句话的意思就是值,将arr这个数据传进来,然后调用getMax方法
                        int min =getMin(arr);
                        System.out.println("max="+max);
                        System.out.println("max="+min);

         }

        public static int getMax(int arr[])  //获取最大值的方法
        {

                int max=0;
                for (int m=0;m<arr.length;m++)
                {
                        if (arr[max]<arr[m])
                        {
                                arr[max]=arr[m];
                        }
            }
                //System.out.println(arr[max]);使用这种打印方式是错误的,因为,返回的结果类型不一致
                return arr[max];//在这里为什么要用return,而不是直接使用打印语句?  

        }
        public static  int getMin(int arr[])  //获取最小值的方法
        {
                int min =0;
             for (int n=0;n<arr.length;n++)
             {
                     if(arr[min]>arr[n])
                     {
                             min=n;
                     }
             }
             return arr[min];
        }



        class ArrDemo3
{  
        public static void main (String[]args)
        {

                int arr[]=new int[]{3,7,4,9,1,0,6};
        // paiXu(arr);
                //daYin(arr);
                //fanZhuang(arr);
                //daYin(arr);
        fanZhuang_1(arr);
    daYin(arr);
        //  maoPao(arr);
         //  daYin(arr);
        }


        public static  void paiXu(int arr[])  //排序方法
        {
                for(int m=0;m<arr.length-1;m++)
                {
                        for(int n=m+1;n<arr.length;n++)
                        {
                                if (arr[m]>arr[n])
                                {
                                        swap(arr,n,m);  //调用数据置换函数

                                  }
                                }
                        }
                }  

        public static void maoPao(int arr[])//冒泡派讯,其实冒泡程序与排序功能一样,上面的代码实现的是正序排列,冒泡排序实现的是倒序排列,同样的可以更改,arr[m]>arr[n]即可实现正序排列
        {
                for(int n=0;n<arr.length-1;n++)
                {
                        for(int m=0;m<arr.length-n-1;m++)  //注意这里的在m取值的时候的范围,注意在这里m<arr.length-n-1,与m<arr.length-m-1;都可以实现正确的结果,但是,在同时运行,排序方法和冒泡方法的时候会出现不正确结果,原因在于:m的取值是随着n变化的,如果低m个数值小于m+1的数值的话,那么不进行置换接下来要做的就是第m+2个数了
                        {
                                if(arr[m]<arr[m+1])
                                { 

                                        swap(arr, m, m+1);
                                }

                        }
                }
        }
        public   static  void swap(int arr[],int x,int y)  //数据置换,重新定义一个对象,进行封装,实现代码的多用型。

        { 
          int temp =arr[x];  //注意此处的置换是对arr[x]这个数进行置换,而不是对脚标进行置换,所以这里不能写成,int temp=x;x=y;y=tem;的形式。
          arr[x]=arr[y];
          arr[y]=temp;

        }

         public static void daYin (int arr[]) //打印语句
         {
               System.out.print("[");
              for(int m=0;m<arr.length;m++)
              {  
                      if(m!=arr.length-1)
                      System.out.print(arr[m]+",");
                      else
                              System.out.println(arr[m]+"]");

              }

     }
        public static void fanZhuang(int arr[])  //数组的反转
        {

                for (int m=0, n=arr.length-1;m<n;m++,n-- )        //注意这里的一个思想,首先让最小的脚标与最大的脚标相比较,比较完成后再进行数据置换,置换完成后再进行下一个最小脚标,下一个第二大脚标比较
           {
                   swap(arr,m,n);

           }


        }  
        public  static void  fanZhuang_1(int arr[])  //反转数据的另外一种方法
        {
         for(int n=0;n<arr.length-1;n++)
         {
                for (int m=0;m<arr.length-n-1;m++)  //这句语句与冒泡程序相似,就是把数据一个一个的进行替换
                 {
                        swap(arr,m,m+1);
                }
         }
        }


 }


import java.util.Arrays;//调用java中自有的函数
 class Test {
         public static void main(String[]args)
         {
                 int arr[]={1,2,5,7,9,0};
                 Arrays.sort(arr);//直接使用java中已存在的方法,开发中多用,Arrays.sort(arr)
                 System.out.print("[");
          for(int i=0;i<arr.length;i++)

            {
                  if(i!=arr.length-1)
                   System.out.print(+arr[i]+",");

                  else
                         System.out.print(arr[arr.length-1]+"]");
          }

         }
 }

作为一个初学者,最近在回顾自学的一些东西,在这写了下,数组中的几种排序方法,在注释的地方基本上是我理解的大白话吧,不过看起来挺使用的,方便大家在某个地方卡主了,没想通的时候作为参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值