zoukankan      html  css  js  c++  java
  • 数据结构和算法之:二分法demo

    package com.js.ai.modules.pointwall.testxfz;
    class OrdArray{
    	private long[] a;
    	private int nElems;
    	public OrdArray(int max) {
    		a=new long[max];
    		nElems=0;
    	}
    	public int size(){
    		return nElems;
    	}
    	//插入方法
    	public void insert(long value){
    		int j;
    		for(j=0;j<nElems;j++){
    			if(a[j]>value)
    				break;
    		}
    		for(int k=nElems;k>j;k--){
    			a[k]=a[k-1];
    		}
    		a[j]=value;
    		nElems++;
    	}
    	
    	//删除方法
    	public boolean delete(long value){
    		int j=find(value);
    		if(j==nElems){
    			return false;
    		}else {
    			for(int k=j;k<nElems;k++){
    				a[k]=a[k+1];
    			}
    			nElems--;
    			return true;
    		}
    	}
    	
    	//二分查找
    	public int find(long searchKey){
    		int lowerBound=0;
    		int upperBound=nElems-1;
    		int curIn;
    		while(true){
    			curIn=(lowerBound+upperBound)/2;
    			if(a[curIn]==searchKey){
    				return curIn;
    			}else if(lowerBound>upperBound){
    				return nElems;
    			}else {
    				if(a[curIn]<searchKey){
    					lowerBound=curIn+1;
    				}else {
    					upperBound=curIn-1;
    				}
    			}
    		}
    	}
    	
    	public void display(){
    		for(int j=0;j<nElems;j++){
    			System.out.print(a[j]+" ");
    		}
    		System.out.print("");
    	}
    }
    public class OrdArrayTest {
    public static void main(String[] args) {
    	int maxSize=100;
    	OrdArray arr;
    	arr=new OrdArray(maxSize);
    	arr.insert(77);
    	arr.insert(00);
    	arr.insert(11);
    	arr.insert(22);
    	arr.insert(88);
    	arr.insert(99);
    	arr.insert(33);
    	arr.insert(55);
    	arr.insert(44);
    	arr.insert(66);
    	int searchKey=55;
    	if(arr.find(searchKey)!=arr.size()){
    		System.out.println("Found:"+searchKey);
    	}else {
    		System.out.println("can not found:"+searchKey);
    	}
    	arr.display();
    	arr.delete(00);
    	arr.delete(55);
    	arr.delete(99);
    	System.out.println("
    ===");
    	arr.display();
    }
    }
    

      

  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/ipetergo/p/7003018.html
Copyright © 2011-2022 走看看