Java程序设计 二分查找与list的排序

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{
    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 list=new ArrayList();
        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 list=new ArrayList();
        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(){
            @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;
            }    
        });

 

你可能感兴趣的:(java基础知识)