單向鏈表反轉,二分查找法

    
    public static void main(String[] args){
        Node node = new Node();
        node.value = 1;
        
        Node node2 = new Node();
        node2.value = 2;
        
        Node node3 = new Node();
        node3.value = 3;
        
        
        Node node4 = new Node();
        node4.value = 4;
        
        node.next=node2;
        node2.next=node3;
        node3.next = node4;
        
        
        Node previous = null;                // 前一個
        Node next = node;                    // 後一個
        
        //單向鏈表反轉
        while((node = next) != null){
            next = node.next;
            node.next = previous;    //  下一個指向本身
            previous = node;
        }
        System.out.println(previous);
        
        int[] is ={1,2,3,4,5,6,7,8,9,10};
        
        //二分查找法
        int low = 0;
        int hight =  9;
        int key = 10;
        while(low <= hight){
            int mid = (low + hight) / 2;
            System.out.println(low + ":" + hight);
            if(is[mid] > key){
                hight = mid - 1;
            }else if(is[mid] < key){
                low = mid + 1;
            }else{
                System.out.println(mid);
                return;
            }
        }
        
    }
    
    static class Node{
        int value;
        Node next;
        
        public String toString(){
            String value = this.value+",";
            Node node = this;
            while((node = node.next) != null){
                value += node.value+",";
            }
            return value;
        }
    }
相關文章
相關標籤/搜索