1.二分查找
//二分查找 二分查找关键在于r>=l含有等号
public static int BinarySearch(int[] data,int aim)
{
int l=0,r=data.length-1;
while(r>=l) //一定要含等于!!!
{
int mid=(l+r)/2;
if(aim==data[mid])
return mid;
else if(aim>data[mid])
l=mid+1;
else
r=mid-1;
}
return -1;
}
2.两种list的实现方式
-
//方法一:在类中实现Comparable接口 按照data排序
class Node implements Comparable<Node>{
int data;
int otherdata;
public Node(int data,int otherdata)
{
this.data=data;
this.otherdata=otherdata;
}
@Override
public int compareTo(Node arg0) {
// TODO Auto-generated method stub
if(this.data<arg0.data)
return 1;
else if(this.data==arg0.data)
return 0;
else
return -1;
}
}
ArrayList<Node> list=new ArrayList<Node>();
list.add(new Node(25,1));
list.add(new Node(52,2));
list.add(new Node(1,3));
list.add(new Node(50,5));
//方法一:按照data排序 在类中实现接口
//Collections.sort(list);
-
//方法二:重写Collections.sort的方法 使用Comparator类
//在 Node类种不需要实现Comparable接口
ArrayList<Node> list=new ArrayList<Node>();
list.add(new Node(25,1));
list.add(new Node(52,2));
list.add(new Node(1,3));
list.add(new Node(50,5));
Collections.sort(list, new Comparator<Node>(){
@Override
public int compare(Node arg0, Node arg1) {
// TODO Auto-generated method stub
if(arg1.data>arg0.data)
return 1;
else if(arg1.data==arg0.data)
return 0;
else
return -1;
}
});