• java数据结构系列——排列(2):有序阵列


    package Array;
    
    /**
     * 对数组排序。当添加到阵列保持有序数组元素;
     * @author wl
     *
     */
    public class MyOrderArray {
    	private long array[];
    	private int elements;//用于记录数组中实际数据的个数
    	
    	public MyOrderArray(){
    		array=new long[50];//数组默认长度为50;
    	}
    	
    	public MyOrderArray(int capacity){//设置数组的默认长度
    		array=new long[capacity];
    	}
    	
    	/**
    	 * 向数组中插入元素,并维护数组中元素的有序性
    	 */
    	public void add(long data){
    		if(elements>array.length-1){
    			throw new ArrayIndexOutOfBoundsException();
    		}
    		
    		int i;
    		for(i=0;i<elements;i++){
    			if(array[i]>data){
    				break;
    			}
    		}
    		
    		for(int j=elements;j>i;j--){
    			array[j]=array[j-1];
    		}
    		array[i]=data;
    		elements++;
    	}
    	
    	
    	/**
    	 * 删除index处的元素
    	 * @param index
    	 */
    	public void delete(int index){
    		if(index>=array.length||index<0){
    			throw new IndexOutOfBoundsException();
    		}
    		for(int i=index;i<=elements;i++){
    			array[i]=array[i+1];
    		}
    		elements--;
    	}
    	
    	/**
    	 * 删除元素data
    	 * @param data
    	 */
    	public void delete(long data){
    		int addr=search(data);
    		if(addr==-1){
    			System.out.println(data+"不存在");
    		}else{
    			for(int i=addr;i<=elements;i++){
    				array[i]=array[i+1];
    			}
    			elements--;
    		}
    	}
    	
    	/**
    	 * 用二分查找(折半查找)法查找数组中data的下标位置
    	 * @param data
    	 * @return
    	 */
    	public int binarySearch(long data){
    		int low,high,mid;
    		
    		low=0;
    		high=elements;
    		
    		while(low<=high){
    			mid=low+(high-low)/2;
    			
    			if(data<array[mid]){
    				high=mid-1;
    			}else if(data>array[mid]){
    				low=mid+1;
    			}else{
    				return mid;
    			}
    		}
    		return -1;
    	}
    	/**
    	 * 查找index处的元素
    	 * @param index
    	 * @return
    	 */
    	public long search(int index){
    		if(index>=array.length||index<0){
    			throw new IndexOutOfBoundsException();
    		}
    		return array[index];
    	}
    	
    	/**
    	 * 查找array中data值所在下标
    	 * @param data
    	 * @return
    	 */
    	public int search(long data){
    		int i;
    		for(i=0;i<=elements;i++){
    			if(array[i]==data){
    				return i;
    			}
    		}
    		return -1;
    	}
    	
    	/**
    	 * 打印数组中的内容
    	 */
    	public void display(){
    		System.out.print("[");
    		for(int i=0;i<elements-1;i++){
    			System.out.print(array[i]+",");
    		}
    		System.out.print(array[elements-1]);
    		System.out.println("]");
    	}
    }
    

  • 相关阅读:
    忽然背后冒冷汗
    随机获取中国境内ip地址的php代码
    复制粘贴的句子
    Winform使用BackGroundWorker代替线程执行后台代码
    在IE中测试调用Web Service
    在存储过程中编写正确的事务处理代码
    【转】使用HttpWebRequest POST图片等文件,带参数
    LINQ to Entities 不识别方法"System.String ToString()"
    Asp.net 出现:HTTP 错误 404.0 Not Found
    C# 用内存映射文件读取大日志文件(.log)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5033916.html
Copyright © 2020-2023  润新知