Java做acm所需要的基础知识之排序问题

原创 2013年12月04日 18:14:55

Java做acm所需要的基础知识。

以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识。                                                                                                      

         1、Arrays.sort()

                   (1)数字排序

                                int[] num =newint[]{4,2,3,5,-8,5,2,3};

            Arrays.sort(num);

           for(int i = 0; i < 8;i++)

               System.out.print(num[i]+”,”);

            输出结果:-8,2,2,3,3,4,5,5,

      (2)字符串排序(先大写后小写原则)

           String[] s = new String[]{"Z","a","A","z"};

          Arrays.sort(s);

          for(int i = 0; i < 4;i++)

          System.out.print(s[i] +",");

          输出结果:A,Z,a,z,

      (3)严格按照字母表排序(即忽略大小写)

          String[] s = new String[]{"Z","a","A","z"};

          Arrays.sort(s,String.CASE_INSENSITIVE_ORDER);

         for(int i = 0; i < 4;i++)

            System.out.print(s[i] +",");

          输出结果:a,A,Z,z,

      (4)忽略大小写反向排序

          String[] s = new String[]{"Z","a","A","z"};

         Arrays.sort(s,String.CASE_INSENSITIVE_ORDER);

         Collections.reverse(Arrays.asList(s));

         for(int i = 0; i < 4;i++)

             System.out.print(s[i] +",");

         输出结果:z,Z,A,a,

      (5)对象的排序(类似于C中的结构体的排序)

 import java.util.Arrays;
          import java.util.Comparator;
           public class Main
           {
               public static void main(String[] args)
               {
                  Dogd1 = new Dog("dog1",1);
                  Dogd2 = new Dog("dog2",2);
                  Dogd3 = new Dog("dog3",3);
                  Dogd4 = new Dog("dog4",4);
                  Dogd5 = new Dog("dog5",5);
                  Dog[]dogs = new Dog[] {d1,d2,d3,d4,d5};
                  Arrays.sort(dogs,new ByWeightComparator());
                  for(int i = 0; i <dogs.length; i++)
                  {
                      Dog dog = dogs[i];
                      System.out.print(dog.getName()+",");
                  }
               }
           }
           class Dog //定义一个“狗类”
           {
               private String name;
               private int weight;
               public Dog(String name, int weight)
               {
              this.setName(name);
              this.weight = weight;
               }
               public int getWeight()
               {
              return weight;
               }
               public void setWeight(int weight)
               {this.weight = weight;}
               public void setName(Stringname)
               {this.name = name;}
               public String getName()
               {return name;}
           }
           class ByWeightComparator implements Comparator
           {
               public final int compare(Object pFirst, Object pSecond)
               {
                  int aFirstWeight = ((Dog)pFirst).getWeight();
                  int aSecondWeight = ((Dog)pSecond).getWeight();
                  int diff = aFirstWeight - aSecondWeight;
                  if(diff >= 0)
                      return -1;
                  else if(diff < 0)
                      return 1;
                  return 0;
               }
           }

           输出结果:dog5,dog4,dog3,dog2,dog1,

 


参考文章地址:

http://www.360doc.com/content/12/0619/15/7823806_219215040.shtml

http://blog.csdn.net/q3498233/article/details/5776028




关于Java做ACM知识的其他文章:

Java做acm所需要的基础知识之排序问题

Java做acm所需要的基础知识之基本输入输出问题

相关文章推荐

杭电ACM1106排序Java代码

排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss...

DecimalFormat对数值格式化的舍入问题——RoundingMode

背景: 在对数值做一些计算的时候,往往我们需要控制计算结果的精度,所以会使用到DecimalFormat类来将数值格式化成字符串。在最近测试中,突然注意到默认使用DecimalFormat进行格式化...
  • alanzyy
  • alanzyy
  • 2013年01月04日 16:39
  • 22730

【数据结构与算法】左偏树(堆)的实现

左偏树,也可以称之为左式堆。称其为树,是因为其存储结构通常采用二叉树,所以可以认为是一种特殊的二叉树。称其为堆,是因为在逻辑结构上,它属于可合并堆的一种。其实数据结构中最欣欣向荣的两个分支就是:平衡树...

Java做acm所需要的基础知识之排序问题

Java做acm所需要的基础知识。 以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识。 ...

Java做acm所需要的基础知识之基本输入输出问题

1、基本定义 import java.util.*; import java.io.*; public class Main  { public static void main(Strin...

Java做acm所需要的基础知识之基本输入输出问题

Java做acm所需要的基础知识之基本输入输出问题 1、基本定义 import java.util.*; import java.io.*; public class Main  { public s...

java模板 Java做acm所需要的基础知识之基本输入输出问题

来源: Java做acm所需要的基础知识之基本输入输出问题 1、基本定义 import java.util.*; import java.io.*; public class Main  {...

ACM几何问题基础知识讲解(附代码)

首先我们要理解什么是向量,向量就是有大小和方向的量。在平面坐标系中,向量用x,y表示。等于向量起点到终点的位移。以下是它们的常用定义:   [cpp] view plaincopypr...

java基础知识冒泡排序

  • 2011年12月13日 21:39
  • 1018B
  • 下载

java基础知识点总结及面试问题

  • 2017年09月12日 00:41
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java做acm所需要的基础知识之排序问题
举报原因:
原因补充:

(最多只允许输入30个字)