Java数据结构(数组篇)

来源:互联网 发布:sqlserver导入sql脚本 编辑:程序博客网 时间:2024/04/30 02:01

小C最近开学数据结构,在此记录下学习历程。


首先:数组的增删改查

package ch01Array;public class MyArray {//数组private long[] arr;//数组中有效数据的大小private int elems;//默认构造函数public MyArray(){arr = new long[50];}public MyArray(int max){arr = new long[max];}//插入数据public void insert(long value){arr[elems] = value;elems++;}//显示数据public void display(){for (int i = 0; i < elems; i++) {System.out.print(arr[i] + " ");}System.out.println();}//查找数据public int find(long searchKey){int i;for(i = 0; i < elems; i++){if(arr[i] == searchKey)break;}if(i == elems)return -1;elsereturn i;}//删除数据public void delete(long deleteKey){if(-1 != find(deleteKey)){for(int i = find(deleteKey); i < elems; i++){arr[i] = arr[i + 1];}}elseSystem.out.println("查找不到指定数据,删除失败");}//修改数据public void change(long oldValue, long newValue){if(-1 != find(oldValue))arr[find(oldValue)] = newValue;elseSystem.out.println("查找不到指定数据,修改失败");}}

测试:

package ch01Array;public class TestMyArray {public static void main(String[] args) {MyArray myArray = new MyArray();myArray.insert(4);myArray.insert(6);myArray.insert(35);myArray.insert(23);myArray.insert(89);myArray.display();System.out.println(myArray.find(23));myArray.delete(5);myArray.display();myArray.change(35, 45);myArray.display();}}

有序插入和二分法查找:

package ch01Array;public class MyOrderArray {//数组private long[] arr;//数组中有效数据的大小private int elems;//默认构造函数public MyOrderArray(){arr = new long[50];}public MyOrderArray(int max){arr = new long[max];}//有序插入数据public void insert(long value){int i;for(i = 0; i < elems; i++){if(arr[i] > value)break;}for(int j = elems; j > i; j--){arr[j] = arr[j - 1];}arr[i] = value;elems++;}//二分法查找public int binaryFind(long searchKey){int ins = 0;int low = 0;int pow = elems;while(true){ins = (low + pow) / 2;if(arr[ins] == searchKey)return ins;else if(low > pow)return -1;elseif(arr[ins] > searchKey)pow = ins - 1;elselow = ins + 1;}}//显示数据public void display(){for (int i = 0; i < elems; i++) {System.out.print(arr[i] + " ");}System.out.println();}}

测试:

package ch01Array;public class TestMyOrderArray {public static void main(String[] args) {MyOrderArray myArray = new MyOrderArray();myArray.insert(56);myArray.insert(6);myArray.insert(35);myArray.insert(23);myArray.insert(89);myArray.display();System.out.println(myArray.binaryFind(35));}}

数组对象存储

对象类

package ch01Array;public class Person {private String name;//姓名private int age;//年龄private String sex;//性别public Person(String name, int age, String sex) {super();this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public void display(){System.out.print("姓名:" + this.name);System.out.print(",年龄:" + this.age);System.out.print(",性别:" + this.sex);System.out.println();}}

对象数组

package ch01Array;public class PersonArray {//数组private Person[] arr;//数组中有效数据的大小private int elems;//默认构造函数public PersonArray(){arr = new Person[50];}public PersonArray(int max){arr = new Person[max];}//插入数据public void insert(Person person){arr[elems] = person;elems++;}//显示数据public void display(){for (int i = 0; i < elems; i++) {arr[i].display();}System.out.println();}//查找数据public int find(String name){int i;for(i = 0; i < elems; i++){if(arr[i].getName().equals(name))break;}if(i == elems)return -1;elsereturn i;}//删除数据public void delete(String name){if(-1 != find(name)){for(int i = find(name); i < elems; i++){arr[i] = arr[i + 1];}}elseSystem.out.println("查找不到指定数据,删除失败");elems--;}//删除数据public void delete(Person person){if(find(person.getName()) == -1)System.out.println("查找不到指定数据,删除失败");elsefor(int i = find(person.getName()); i < elems; i++){arr[i] = arr[i + 1];}elems--;}//修改数据public void change(Person oldPerson, Person newPerson){if(-1 != find(oldPerson.getName()))arr[find(oldPerson.getName())] = newPerson;elseSystem.out.println("查找不到指定数据,修改失败");}}

测试类:

package ch01Array;public class TestPersonArray {public static void main(String[] args) {PersonArray pa = new PersonArray();//创建对象Person p1 = new Person("张三",20,"男");Person p2 = new Person("李四",21,"男");Person p3 = new Person("王五",22,"女");Person p4 = new Person("赵六",23,"男");Person p5 = new Person("李斯",24,"男");//插入操作pa.insert(p1);pa.insert(p2);pa.insert(p3);pa.insert(p4);pa.insert(p5);pa.display();//删除操作pa.delete("李斯");pa.display();//删除操作pa.delete(p2);pa.display();}}



原创粉丝点击