• 《Java数据结构与算法》笔记CH2无序数组


    /**
     * 本章目标:
     * 		1.自制数组类 
     * 		2.有序数组:按关键字升降序排列;二分法查找
     * 		3.分析有序数组。大O表示法 
     */
    /**
     * 自制数组类 书中有的地方有错误,本程序以修改
     */
    class HighArray {
    	private long[] a;
    	private int nElements;// 维护array的实际元素个数
    
    	public HighArray(int size) {
    		a = new long[size];
    		nElements = 0;// 初始化的时候个数设为0
    	}
    
    	/**
    	 * toString()把数组转为字符串,方便打印
    	 */
    	public String toString() {
    		if (nElements == 0)
    			return "[]";// 若数组元素个数为0,直接返回[]即可
    		StringBuilder sb = new StringBuilder();
    		sb.append("[");
    		for (int i = 0; i < nElements; i++) {
    			sb.append(a[i] + ",");
    		}
    		sb.deleteCharAt(sb.length() - 1);
    		sb.append("]");
    		return sb.toString();
    	}
    
    	/**
    	 * 打印数组
    	 */
    	public void display() {
    		System.out.println(toString());
    	}
    
    	/**
    	 * 插入value
    	 * 
    	 * @param value
    	 */
    	public void insert(long value) {
    		if (nElements >= a.length) {// 数组已满
    			System.out.println("array is full.");
    			return;
    		}
    		// 未满则进行插入,个数加一
    		a[nElements] = value;
    		nElements++;
    	}
    
    	/**
    	 * 删除value
    	 * 
    	 * @param value
    	 * @return
    	 */
    	public boolean delete(long value) {
    		if (nElements == 0) {// 数组为空
    			System.out.println("array is empty...");
    			return false;
    		}
    		// 找到要删除的元素索引j
    		int j;
    		for (j = 0; j < nElements; j++) {
    			if (value == a[j])
    				break;
    		}
    		// 数组中不含value元素
    		if (j == nElements)
    			return false;
    		//若有value元素,则从该元素位置开始到倒数第二个元素,每个元素被其后一个替换,
    		//即后面的元素往前移动一个位置。此处中文版边界有错误
    		else {
    			for (int k = j; k < nElements - 1; k++) {
    				a[k] = a[k + 1];
    			}
    			nElements--;
    			return true;
    		}
    	}
    
    	/**
    	 * 数组中是否包含元素key
    	 * 
    	 * @param key
    	 * @return
    	 */
    	public boolean find(long key) {
    		int j;
    		for (j = 0; j < nElements; j++)
    			if (a[j] == key)
    				break;
    		if (j == nElements)
    			return false;
    		else
    			return true;
    	}
    
    	/**
    	 * 数组元素个数
    	 * 
    	 * @return
    	 */
    	public int size() {
    		return nElements;
    	}
    }
    
    public class ArrayDemo {
    	public static void main(String[] args) {
    		HighArray la = new HighArray(10);
    		int[] a = { 1, 3, 3, 4, 2, 6, 7, 9, 8, 12, 33 };
    		for (int i = 0; i < a.length; i++) {
    			la.insert(a[i]);
    			la.display();
    		}
    		// System.out.println(la.find(3322));
    		// for(int i = 0;i<a.length;i++){
    		// la.delete(a[i]);
    		// la.display();
    		// }
    		// la.delete(3);
    		la.delete(3);
    		la.display();
    	}
    }

  • 相关阅读:
    到现在为止中国荣获43金
    php fpdf 生成表格总结
    今天,开心``
    js 浮动层实现方法
    奥运,刘翔,CSDN,菲尔普斯,中国
    marc 数据基本字段
    Windows mobile下获取系统图标
    HTTP协议学习笔记
    UNIX网络编程学习(14)使用select正确处理EOF的str_cli函数修订版
    ARP协议学习笔记
  • 原文地址:https://www.cnblogs.com/fstack/p/5617266.html
Copyright © 2020-2023  润新知