转载请注明出处:http://blog.csdn.net/u011569040/article/details/45971749
面向对象编程方式
程序:
1.使用自定义类封装数组
2.添加类的方法来实现数据操作:增、添、改、除
public class Myarrt {
private long[] arr;
private int elements;
//构造方法
public Myarrt(){
arr = new long[50];
}
public Myarrt(int Maxsize){
arr = new long[Maxsize];
}
//添加数据
public void insert (long value){
arr[elements] = value;
elements ++;
}
//显示数据
public void display(){
System.out.println("[");
for (int i = 0; i < elements; i++) {
System.out.println(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){
//假设数组里面有四个数据1、2、3、4,现在删除2,只需要让3覆盖2,4覆盖3,最后把数组的长度减一
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;
}
}
}
public class Test {
public static void main(String[] args) {
Myarrt my = new Myarrt();
my.insert(13);
my.insert(66);
my.insert(352);
my.display();
System.out.println(my.search(190));
System.out.println(my.get(1));
my.delete(1);
my.display();
my.change(0 , 12);
my.display();
}
}
有序数组
1.有序数组简介以及其优点
2.构建有序数组
只需要更改insert()方法
//添加数据(从小到大的顺序)
public void insert (long value){
//假设有4个数,1、2、4、12,要插入3,先找出第一个比3大的数
int i;
for(i=0;i<elements;i++){
if (arr[i]>value){
break;
}
}
//4比3大,然后把12赋值给第5个元素,4赋给12,3赋值给4
for(int j = elements;j > i;j--){
arr[j] = arr[j-1];
}
arr[i] = value;
elements ++;
}
查找算法:
1.线性查找
2.二分法查找(前提是有序数组)
//二分法查找
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;
}
}
}
}