Java刷算法
1.普通数组排序
使用Arrays.sort()函数快速牌序,默认从小到大排序。
public class 排序 {
public static void main(String []args){
Scanner input=new Scanner(System.in);
int a[]={8,4,3,5,6};
Arrays.sort(a);
for(Integer i:a){
System.out.printf("%d ",i);
}
input.close();
}
}
排序结果:3、4、5、6、8
2.动态数组(ArrayList)
2.1增强型遍历
其中Integer为数据类型,更改为动态数组a的实际数据类型。
for(Integer i:a){}
2.2其中常用API接口
a.get(index);//获取a相应下标index的数据
a.add(x);//将x添加入a
2.3排序
2.3.1默认排序方式
使用Collections.sort()函数快速排序,默认排序方式为升序,可以使用Collections.reverse()函数将结果进行翻转,实现倒序排序。
Collections.sort()//实现动态数组快速排序
Collections.reverse()//将动态数组进行翻转
2.3.2重定义排序
若升序排列,则返回o1-o2;否则降序排列,返回o2-o1.即返回值顺序与传入参数一致,则升序,相反则降序。
Collections.sort(query,new Comparator<Pair>(){//从小到大排序
@Override
public int compare(Pair o1,Pair o2){
int a=o1.x-o2.x;
int b= a==0?o1.y-o2.y:a;
return b;
}
} );
3.哈希表(HashMap)
3.1增强型遍历
for(Map.Entry<Pair,Integer>item:query.entrySet()){
if(item.getKey().x==hh&&item.getKey().y==mm){
query.replace(item.getKey(), item.getValue(), item.getValue()+1);
flag=false;
break;
}
}
3.2其他常用API接口
a.put(key,value);//添加
a.get(key);//查询key的值
a.replace(key,value);//修改
3.3排序
Java针对其并没有专门的排序API,所以为实现其的快速排序,首先要将其转化为ArrayList,然后使用Collections.sort()重定义排序方式。
ArrayList<HashMap.Entry<Character,Integer>>list=new ArrayList<>(map.entrySet());
//将HashMap转ArrayList
按照value进行升序排列
Collections.sort(list,new Comparator<HashMap.Entry<Character,Integer>>() {
@Override
public int compare(HashMap.Entry<Character,Integer>o1,HashMap.Entry<Character,Integer>o2){
return o1.getValue().compareTo(o2.getValue());//
}
});