数据结构-数组
程序员文章站
2024-02-24 17:30:34
...
使用数组进行练习,涉及增删改查,按下标查询,按二分法进行查询
package com.lyz.dataStructure.array;
/**
*@Author:[email protected] Lyz
*@Date: 2019/3/28 15:01
*@Description:
**/
/*
数据结构 第一节 数组
*/
public class ArrayDemo {
private int[] arr;
//表示有效数据的长度
private int elements;
public ArrayDemo(){
arr = new int[50];
}
/*
*/
public ArrayDemo(int maxsize){
arr = new int[maxsize];
}
/*
添加数据
*/
public void insert(int value){
arr[elements]=value;
elements++;
}
/*
添加数组排序
*/
public void insert1(int 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 int ErFenSearch(int value){
int lower = 0;
int middle ;
int power = elements;
while(true){
middle = (lower+power)/2;
if(arr[middle]==value){
return middle;
}else if(lower>value){
return -1;
}else{
if(arr[middle]>value){
power = middle -1;
}else{
lower = middle + 1;
}
}
}
}
/*
打印
*/
public void print(){
System.out.print("[");
for(int i=0;i<elements;i++){
System.out.print(arr[i] +" ");
}
System.out.println("]");
}
/*
查询值
*/
public int search(int value){
int i;
for(i=0;i<elements;i++){
if(value==arr[i]){
break;
}
}
if(i == elements){
return -1;
}else {
return 1;
}
}
/*
查询下标
*/
public int 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 update(int index,int newValue){
if(index>=elements || index< 0){
throw new ArrayIndexOutOfBoundsException();
}else{
arr[index] = newValue;
}
}
}
测试类
package com.lyz.dataStructure.array;
/**
*@Author:[email protected] Lyz
*@Date: 2019/3/28 15:16
*@Description:
**/
public class TestArrayDemo {
public static void main(String[] args) {
ArrayDemo arrayDemo = new ArrayDemo();
//打印数据
/* arrayDemo.print();
// 添加数据
arrayDemo.insert(10);
arrayDemo.insert(15);
arrayDemo.insert(18);
arrayDemo.insert(20);
arrayDemo.insert(30);
//打印添加的数据
arrayDemo.print();
//查询值
System.out.println(arrayDemo.search(20));
//根据下标查找数据
System.out.println(arrayDemo.get(3));
// 删除数据
arrayDemo.delete(4);
//删除后,查询数据
arrayDemo.print();
//更新数据
arrayDemo.update(1,58);
arrayDemo.print();*/
arrayDemo.insert1(10);
arrayDemo.insert1(52);
arrayDemo.insert1(28);
arrayDemo.insert1(36);
arrayDemo.insert1(19);
arrayDemo.insert1(8);
arrayDemo.print();
System.out.println(arrayDemo.ErFenSearch(36));
}
}
上一篇: 在Asp.net中为图像加入水印信息并保存为Jpg类型
下一篇: 数据结构 —— 数组