Java做acm所需要的基础知识之排序问题
2013-12-05 12:04
477 查看
Java做acm所需要的基础知识。
以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识。
Arrays.sort(num);
for(int i = 0; i < 8;i++)
System.out.print(num[i]+”,”);
输出结果:-8,2,2,3,3,4,5,5,
Arrays.sort(s);
for(int i = 0; i < 4;i++)
System.out.print(s[i] +",");
输出结果:A,Z,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,
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,
输出结果:dog5,dog4,dog3,dog2,dog1,
未完待续。。。。。。
以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识。
1、Arrays.sort()
(1)数字排序
int[] num =new int[]{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,
未完待续。。。。。。
相关文章推荐
- JAVA模板 Java做acm所需要的基础知识之排序问题
- Java做acm所需要的基础知识之排序问题
- Java做acm所需要的基础知识之排序问题
- Java做acm所需要的基础知识之基本输入输出问题
- Java做acm所需要的基础知识之基本输入输出问题
- java模板 Java做acm所需要的基础知识之基本输入输出问题
- Java基础知识强化之集合框架笔记71:模拟斗地主洗牌和发牌并对牌进行排序的案例
- java基础知识六--排序
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
- Java基础知识强化54:经典排序之插入排序(InsertSort)
- 全角字符Unicode编码及解问题中用到的Java基础知识
- 互联网公司面试问题总结之java基础知识
- java多线程常见问题及基础知识
- Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨
- moon java 并发的基础知识 以编程思想的第21章为总体概览及问题
- Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)
- MySql数据库之-------java编程所需要的知识(基础)
- J2ME中需要的Java基础知识
- Java Web基础需要掌握知识
- java基础知识(六) 数组中copy、排序、查找的应用