算法与数据结构复习——java封装数组、有序数组

package ch01;


/**
 * @author lixin
 * @date 2018年7月22日
 * @Description 数组
 */
public class MyArray {
	
	private long[] arr;
	
	//表示有效数据长度
	private int element;
	
	public MyArray(){
		arr= new long[50];
	}
	
	public MyArray(int maxsize){
		arr = new long[maxsize];
	}
	
	/**
	 * 添加数据
	 */
	public void insert(long value){
		 arr[element] = value;
		 element++;
	}
	
	/**
	 * 显示所有数据
	 */
	public void show(){
		System.out.print("[");
		for(int i =0;i<element;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.print("]");
	}
	
	/**
	 * 查找数据
	 */
	
	int select(long value){
		int i;
		for(i=0;i<element;i++){
			if(arr[i]==value){
				break;
			}
		}
		if(i==element){
			return -1;
		}else{
			return i;
		}
	}
	
	/**
	 * 根据索引来查
	 */
	long selectByIndex(int index){
		if(index>=element||index<0){
			throw new ArrayIndexOutOfBoundsException();
		}else{
			return arr[index];
		}
	}
	
	/**
	 * 删除数据
	 */
	public void delete(int index) {
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			for(int i = index; i < element; i++) {
				arr[i] = arr[i + 1];
			}
			element--;
		}
	}
	
	/**
	 * 更新数据
	 */
	void change(int index,long value){
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			arr[index]=value;
		}
	}
}

有序数组

package ch01;

public class MyOrderArray {
	
	private long[] arr;
	
	//表示有效数据长度
	private int element;
	
	public MyOrderArray(){
		arr= new long[50];
	}
	
	public MyOrderArray(int maxsize){
		arr = new long[maxsize];
	}
	
	/**
	 * 通过添加方法来确定数组的有序性
	 */
	public void insert(long value){
		int i; 
		for(i=0;i<element;i++){
			 if(value<arr[i]){
				 break;
			 }
		 }
		 
		 for(int j=element;j>=i;j--){
			 arr[j+1]=arr[j];
		 }
		 arr[i]=value;
		 element++;
	}
	
	/**
	 * 显示所有数据
	 */
	public void show(){
		System.out.print("[");
		for(int i =0;i<element;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.print("]");
	}
	
	/**
	 * 查找数据
	 */
	
	int select(long value){
		int i;
		for(i=0;i<element;i++){
			if(arr[i]==value){
				break;
			}
		}
		if(i==element){
			return -1;
		}else{
			return i;
		}
	}
	
	/**
	 * 根据索引来查
	 */
	long selectByIndex(int index){
		if(index>=element||index<0){
			throw new ArrayIndexOutOfBoundsException();
		}else{
			return arr[index];
		}
	}
	
	/**
	 * 删除数据
	 */
	public void delete(int index) {
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			for(int i = index; i < element; i++) {
				arr[i] = arr[i + 1];
			}
			element--;
		}
	}
	
	/**
	 * 更新数据
	 */
	void change(int index,long value){
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			arr[index]=value;
		}
	}
	
	
	/**
	 * 二分法查找
	 */
	int binarySearch(long value){
		int middle=0;
		int left=0;
		int right=element;
		while(true){
			middle=(left+right)/2;
			if(arr[middle]==value){
				return middle;
			}else if(right<=left){
				return -1;
			}else{
				if(value>arr[middle]){
					left=middle+1;
				}
				if(value<arr[middle]){
					right=middle-1;
				}
			}
		}
	}
	
}

测试

package ch01;

public class TestArray {
	public static void main(String[] args) {
//		MyArray arr = new MyArray(40);
//		arr.insert(12);
//		arr.insert(15);
//		arr.insert(159);
//		arr.show();
//		System.out.println(arr.select(159));
//		System.out.println(arr.selectByIndex(2));
//		arr.delete(1);
//		arr.show();
//		arr.change(0, 222);
//		arr.show();
		
		MyOrderArray arr = new MyOrderArray(59);
		arr.insert(11);
		arr.insert(39);
		arr.insert(2);
		arr.show();
		System.out.println(arr.binarySearch(39));
		
		
	}
}

猜你喜欢

转载自blog.csdn.net/braveandbeauty/article/details/81164461
今日推荐