数据结构1:数组专题
2017-07-29 22:38
323 查看
本文主要是针对数据结构中最基本的数组的增删改查工具类。
基本数组的增删改查工具类:
排序数组的增删改查,由于已经排好序了,所以可以通过二分查找方法查找指定的元素值所在数组的位置:
基本数组的增删改查工具类:
package ch01; public class MyArray { private long[] arr; //表示有效数据的长度 private int elements; public MyArray() { arr = new long[50]; } public MyArray(int maxsize) { arr = new long[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(value == arr[i]) { break; } } if(i == elements) { return -1; } else { return i; } } /** * 查找数据,根据索引来查 */ public long 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; } } }
排序数组的增删改查,由于已经排好序了,所以可以通过二分查找方法查找指定的元素值所在数组的位置:
package ch01; public class MyOrderArray { private long[] arr; //表示有效数据的长度 private int elements; 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 < elements; i++) { if(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 == arr[i]) { break; } } if(i == elements) { return -1; } else 4000 { return i; } } /** * 二分法查找数据 */ public int binarySearch(long value) { int middle = 0; int low = 0; int pow = elements; while(true) { middle = (pow + low) / 2; if(arr[middle] == value) { return middle; } else if(low > pow) { return -1; } else { if(arr[middle] > value) { pow = middle - 1; } else { low = middle + 1; } } } } /** * 查找数据,根据索引来查 */ public long 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:数组排序专题
- 数据结构实验之数组三:快速转置
- 数据结构3:队列与栈专题
- R语言学习:数据结构3-矩阵、数组
- 数据结构和算法设计专题之---二分查找(Java版)
- 数据结构之数组及其操作(C语言版)
- 数据结构之后缀数组
- go context专题(二)- context设计目的和基本数据结构
- 列数组Program perl 数据结构
- Uva 11990 "Dynamic" Inversion(树状数组 + 数据结构分块)
- 数据结构之顺序栈(数组)C++(模板)
- 数据结构基础(1)--数组C语言实现--动态内存分配(跟风追逐,加强突击)
- HDU 4417 超级马里奥 数据结构+利用树状数组进行快速统计+多维统计转换
- 数据结构(java语言描述)串与数组——文件加解密
- 数据结构:数组的操作(C语言描述)
- 数据结构与算法2——数组
- 29、数据结构笔记之二十九数组之硬币抛掷模拟
- CUGB专题训练之数据结构:B - Count Color 线段树区间更新
- 数据结构与算法:数组