学习笔记第一节:数组应用相关
2015-03-01 12:09
330 查看
1:自定义类封装数组,实现CRUD
2:自定义类封装有序数组,使用二分查找算法查找:
3:测试代码:
package ch01; /** * 使用自定义类实现对 数组封装:实现CRUD * 封装后的数组是无序的 * @author xxg * */ public class MyArray { // 定义一个对象数组 private Object[] arr; //表示有效数据的长度 private int elements; public MyArray() { arr = new Object[50]; } public MyArray(int maxsize) { arr = new Object[maxsize]; } /** * 添加数据 */ public void insert(long value) { arr[elements] = value; elements++; } /** * 显示数据 */ public void display() { System.out.print("["); for(int i = 0; i < elements; i++) { System.out.print(arr[i] + " "); } System.out.println("]"); } /** * 查找数据 */ public int search(long value) { int i; for(i = 0; i < elements; i++) { if((Object)value == arr[i]) { break; } } if(i == elements) { return -1; } else { return i; } } /** * 查找数据,根据索引来查 */ public Object get(int index) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { return arr[index]; } } /** * 根据索引删除数据 */ public void delete(int index) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { for(int i = index; i < elements; i++) { // 改变元素的索引位置,将后面位置索引替换前面的位置索引 arr[index] = arr[index + 1]; } elements--; } } /** * 根据索引更新数据 */ public void change(int index, int newvalue) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { arr[index] = newvalue; } } }
2:自定义类封装有序数组,使用二分查找算法查找:
package ch01; /** * 使用自定义类,封装有序数组 * @author xxg * */ public class MyOrderArray { private Object[] arr; //表示有效数据的长度 private int elements; public MyOrderArray() { arr = new Object[50]; } public MyOrderArray(int maxsize) { arr = new Object[maxsize]; } /** * 在添加数据的时候,对数组进行排查 */ public void insert(long value) { int i; for(i = 0; i < elements; i++) { // 如果数组中元素大于插入的元素 if((Long)arr[i] > value) { break;// 得到当前元素的索引位置 } } // 将大于当前的元素都依次后移一位索引 for(int j = elements; j > i; j--) { arr[j] = arr[j - 1]; } arr[i] = value; elements++; } /** * 显示数据 */ public void display() { System.out.print("["); for(int i = 0; i < elements; i++) { System.out.print(arr[i] + " "); } System.out.println("]"); } /** *一般的 查找数据 */ public int search(long value) { int i; for(i = 0; i < elements; i++) { if(value == (Long)arr[i]) { break; } } if(i == elements) { return -1; } else { return i; } } /** * 前提条件,必须是对有序的数组才能使用 * 折半查找算法: * 二分法查找数据 */ public int binarySearch(long value) { int middle = 0;// 中间位置 int low = 0; // 开始位置 int pow = elements; // 结尾位置 while(true) { middle = (pow + low) / 2; if((Long)arr[middle] == value) { return middle; } else if(low > pow) { return -1; } else { if((Long)arr[middle] > value) { pow = middle - 1;// 往左边移动 } else { low = middle + 1;// 往右边移动 } } } } /** * 查找数据,根据索引来查 */ public Object get(int index) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { return arr[index]; } } /** * 删除数据 */ public void delete(int index) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { for(int i = index; i < elements; i++) { arr[index] = arr[index + 1]; } elements--; } } /** * 更新数据 */ public void change(int index, int newvalue) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { arr[index] = newvalue; } } }
3:测试代码:
package ch01; /** * 对有序数组和无序数组测试 * @author Administrator * */ public class TestMyArray { public static void main(String[] args) { // 测试无序数组 // MyArray arr = new MyArray(); // arr.insert(113); // arr.insert(342); // arr.insert(902); // arr.insert(402); // arr.insert(502); // // arr.display(); // System.out.println(arr.search(130)); // // System.out.println(arr.get(1)); // // arr.change(0, 12); // arr.display(); // 测试有序数组 MyOrderArray arr = new MyOrderArray(); arr.insert(50); arr.insert(40); arr.insert(90); arr.insert(30); arr.insert(80); arr.insert(10); arr.insert(102); arr.display(); System.out.println(arr.binarySearch(102)); } }
相关文章推荐
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- 我的php学习笔记(四)数组的创建与应用
- PHP学习笔记——使用foreach语句遍历数组的应用
- 学习Python数据分析随手笔记【一】numpy数组的函数简单应用
- PHP学习笔记——PHP数组中和键值搜索相关的函数2
- php学习笔记(六)数组及其相关处理函数
- C/C++ 学习笔记:字符串、数组相关
- PHP学习笔记——PHP数组中键和值搜索的相关函数1
- JavaScript数组相关方法学习笔记
- GAN︱生成模型学习笔记(运行机制、NLP结合难点、应用案例、相关Paper)
- PHP学习笔记(3) 数组相关函数②.
- zepto源码--核心方法(类数组相关)--学习笔记
- javaweb学习笔记:web应用的相关知识
- 七月算法深度学习 第三期 学习笔记-第八节 循环神经网络与相关应用
- PHP学习笔记5-PHP数组的介绍与应用
- 【Java学习笔记】数组的相关事项
- 黑马程序员----C 语言学习笔记之二维数组的存储和应用(迷宫小游戏)
- C/C++ 学习笔记:字符串、数组相关
- PHP学习笔记——PHP数组中键和值搜索相关函数3
- 【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸