当前位置: 代码迷 >> 综合 >> java基础--如何用java实现数组呢
  详细解决方案

java基础--如何用java实现数组呢

热度:49   发布时间:2023-11-01 14:25:59.0

java数据结构的练习一:如何用Java来实现数组;

说起来数据结构大家肯定会想到,数组,队列,堆栈,链表,图,树等其他的,接下来会每天逐一对其进行学习和使用,以及个人所理解的情况给展示出来

什么是数组呢?

1.数组是相同数据类型的元素的集合。

2.数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。

3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。

这里主要说明一下一位数组如何构造呢:接下来看代码:
其中要说明以下几点吧:

1.需要提前定义数组,和定义有效的长度,

对于数组的添加:其实是对每一个下标来赋值,同时把有效长度递增

对弈数组的查看:通过值来返回所在的位置,本质是,通过循环遍历每一个下标所对应的值如果相同暂停,这时所对应的下标就是循环遍历的i所以返回i就可以了

数组的查找:通过下标查找,直接返回所对应的下标的值

删除数据:通过循环遍历,删除哪一个下标则把后面的数据赋值给前面的,同时对其进行有效长度自减1,

数据的更新:通过指定下标和值就可以实现更新,

有序添加:先循环遍历判断其值是否与添加的值的大小,这里是添加的值小的情况下终止,执行把添加后面的元素往前推移

这里是最后一个元素赋值给前一个元素,同时把新加入的元素给赋值到下标i;元素总量+1;

二分查找:二分查找必须是有序的数组,通过输入要查找的值,返回对应的位置,主要是设置变量,每次必须是把数组给分割成两块,把中间的值与出入的值相比较,如果相等,则返回数据,如不等判断大小,如果大于所查找的值最大下标为中间下标-1,否则最小下标为中间的值+1,这然后把所有的分割的范围

package com.kaysanshi.testArray;
/**** 构造一个属于自己的数组* @author leoill*@date 2019年4月23日*/
public class TestArray {private long[] arry;//定义一个数组private int elements;//定义数据有效长度public TestArray(){arry=new long[50];//设置50长度}public TestArray(int maxsize){arry=new long[maxsize];}/*** 数组的数据的添加*/public void insert(long value){arry[elements]=value;elements++;	}/*** 显示数据*/public void display(){System.out.println("[");for(int i=0;i<arry.length;i++){System.out.println(arry[i]+ " ");}System.out.println("]");}/*** 根据值来返value*/public int search(long value){int i;for(i=0;i<elements;i++){if (value==arry[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 arry[index];}}/*** 删除数据*/public void delete(int index ){if (index >=elements || index <0) {throw new ArrayIndexOutOfBoundsException();}else{for(int i=0;i<elements;i++)arry[index]=arry[index+1];elements--;}}/*** 更新* @param index* @param newvalue*/public void update(int index, long newvalue){if (index >=elements || index <0) {throw new ArrayIndexOutOfBoundsException();}else{arry[index]=newvalue;}}///// 以下是有序数组的操作                /////                      ////                     //////*** 有序添加* @param value*/public void sortinsert(long value){int i;for(i=0;i<elements;i++){if (arry[i]>value) {break;}}for(int j=elements;j>i;j--){arry[j]=arry[j-1];}arry[i]=value;elements++;}/*** 二分查找:前提是必须是有序的数组* @return*/public int binarysearch(long value){int middle=0;int low=0;int pow=elements;//最大下标while(true){middle=(pow+low)/2;if (arry[middle] == value) {return middle;}else if (low >pow) {return -1;}else {if (arry[middle]>value) {pow =middle-1;}else{low =middle+1;}}}}/**** 测试* @param args*/public static void main(String[] args){} 
}