首页 / 算法 / 数据结构与算法之线性结构数组
数据结构与算法之线性结构数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据结构与算法之线性结构数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4101字,纯文字阅读大概需要6分钟。
内容图文
![数据结构与算法之线性结构数组](/upload/InfoBanner/zyjiaocheng/604/dc131f6208774207a6dc042590b9035b.jpg)
数据结构与算法之线性结构数组
往事种种,似水无痕、、、这篇文章是为自己复习完数据结与算法的数组后而编写的,有什么不足之处,欢迎指出,也不废话,直接上代码
package xianxingjiegou;
import java.util.Arrays;
public class MyArray {
//创建一个数组对象
private int[] array;
//构造方法对数组进行初始化
public MyArray() {
array = new int[0];
}
//返回数组长度
public int relength() {
return array.length;
}
//添加数组元素(在数组的最后面添加)
public void add(int element) {
//创建一个新数组
int[] arr = new int[array.length+1];
//开始添加
for (int i = 0; i < array.length; i++) {
arr[i] =array[i];
}
arr[array.length] = element;
//新数组替换旧数组
array = arr;
}
//插入数组元素
/**
* @param index 表示添加的元素
* @param count 表示元素添加的位置
*/
public void insert(int index,int count) {
//创建一个新数组
int arr[] = new int[array.length+1];
//开始插入
for (int i = 0; i < arr.length; i++) {
if (i<count) {
arr[i] = array[i];
}else if (i == count) {
arr[i] = index;
}else {
arr[i] = array[i-1];
}
}
//新数组替换旧数组
array = arr;
}
//删除数组元素
public void delete(int count) {
//创建一个新数组
int arr[] = new int[array.length-1];
//开始删除
for (int i = 0; i < arr.length; i++) {
if (i<count) {
arr[i] = array[i];
}else {
arr[i] = array[i+1];
}
}
//新数组替换旧数组
array = arr;
}
//查看数组元素
public void show() {
//快速查看数组元素
System.out.println(Arrays.toString(array));
}
//获取数组当中某个未知的元素
public int getElement(int count) {
return array[count];
}
//替换数组中的某个位置的元素
/**
* @param count 表示位置坐标
* @param index 表示的是替换的元素
*/
public void replace(int count,int index) {
//创建一个新数组
int[] arr = new int[array.length];
//开始替换
if (count<0||count>=array.length) {
System.out.println("下标越界,替换失败");
}
for (int i = 0; i < array.length; i++) {
if (i!=count) {
arr[i] = array[i];
}else{
arr[count] = index;
}
}
//新数组替换旧数组
array = arr;
}
//数组的线性查找法,查找目标元素,若找到了,返回数组的下标,如没有该元素,提示操作者未找到
public int searchEl(int element) {
//目标元素的下标
int target = -1;
for (int i = 0; i < array.length; i++) {
//进行判定
if (array[i]==element) {
target = i;
}
}
return target;
}
//数组的二分查找法,查找目标元素,若找到了,返回数组的下标,如没有该元素,提示操作者未找到
public int erfenser(int element) {
//元素中间坐标设置
int begin = 0;
int end = array.length-1;
int mid = (begin+end)/2;
//开始查找
while(true) {
//开始位置大于结束位置,或者说二者重合时,说明不存在该元素,返回-1
if (begin>=end) {
return -1;
}
//判定中间的元素是否为我们需要查找的元素
if (array[mid]==element) {
return mid;
}else {
//中间的元素比目标元素小
if (array[mid]<element) {
begin = mid+1;
}else {
//中间的元素比目标元素大
end = mid-1;
}
//取出新的中间位置
mid = (begin+end)/2;
}
}
}
}
接着是它的测试类
package test;
import java.util.Arrays;
import xianxingjiegou.MyArray;
public class TestMyArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建对象
MyArray myArray = new MyArray();
//查看初始化时的数组长度
System.out.println("初始化时的数组长度为:"+myArray.relength());
//添加前查看下数组元素
myArray.show();
//添加元素
myArray.add(9);
myArray.add(8);
myArray.add(7);
myArray.add(6);
myArray.add(5);
//添加后查看下数组元素
myArray.show();
//在固定位置添加元素
myArray.insert(3, 1);
myArray.show();
//删除固定位置元素
myArray.delete(1);
myArray.show();
//获取某一个未知的元素
myArray.getElement(0);
//替换某一个位置的元素
myArray.replace(2, 1);
myArray.show();
//查看操作完后的数组长度
System.out.println("操作完后的数组长度为:"+myArray.relength());
//数组的线性查找
int searchEl = myArray.searchEl(5);
if (searchEl==-1) {
System.out.println("该元素未在该数组中找到,返回-1");
}else {
System.out.println("该元素的在数组中的下标为:"+searchEl);
}
//数组的二分查找法,由于二分查找法的要求必须是要求数组为有序的,所以先将数组变成有序数组
//替换某一个位置的元素
myArray.replace(2, 7);
myArray.show();
int erfenser = myArray.erfenser(10);
if (erfenser==-1) {
System.out.println("该元素未在该数组中找到,返回-1");
}else {
System.out.println("该元素的在数组中的下标为:"+erfenser);
}
}
}
测试结果为:
初始化时的数组长度为:0
[]
[9, 8, 7, 6, 5]
[9, 3, 8, 7, 6, 5]
[9, 8, 7, 6, 5]
[9, 8, 1, 6, 5]
操作完后的数组长度为:5
该元素的在数组中的下标为:4
[9, 8, 7, 6, 5]
该元素未在该数组中找到,返回-1
内容总结
以上是互联网集市为您收集整理的数据结构与算法之线性结构数组全部内容,希望文章能够帮你解决数据结构与算法之线性结构数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。