数组:数组存储具有相同数据结构的元素集合,一维数组占有一块内存空间,数组一旦占用存储空间(连续),其地址和容量就是确定的,不能改变。
下面是详细的代码和实现结果:
package array;
import java.util.ArrayList;
import java.util.List;
public class array {
public static List<Integer> Search(int [] x,int value) {
List list = new ArrayList<>();
if(x.length!=0) {
for(int i = 0;i<x.length;i++) {
if(x[i] == value) {
list.add(i);
}
}
return list;
}
return null;
}
// 1 2 4 5
public static int[] insert(int [] x,int value) {
if(x.length!=0) {
int [] xx = new int [x.length+1];
int index = x.length - 1;
int i ;
for(i = 0;i<x.length;i++) {
if(x[i]<=value) {
xx[i] = x[i];
}
else {
xx[i] = value;
break;
}
}
i--;
for(int j = i+1;j<xx.length;j++) {
System.out.println("");
if(i == x.length -1 ) {
xx[j] = value;
}else {
System.out.println(2222);
xx[j] = x[j-1];
}
}
return xx;
}
return null;
}
public static int add(int[]x,int value,int size) {
if(x.length!=0) {
x[size] = value;
size++;
}
return size;
}
// 1 2 3 4 5 6 7 8
// 2 1 4 8 4 3 2 6 2 4
public static int delete(int []x,int value,int size) {
if(x.length!=0) {
if(Search(x,value)!=null) {
List<Integer> list = Search(x,value);
int index = 0;
for(int i = 0;i<size;i++) {
for(int j = 0;j<list.size();j++) {
if(i == list.get(j)-index) {
for(int k = i;k<size;k++) {
x[k] = x[k+1];
}
index++;
size--;
}
}
}
}
return size;
}
return 0;
}
public static void update (int []x,int pre,int value) {
if(x.length!=0) {
if(Search(x,pre)!=null) {
List<Integer> list = Search(x,pre);
for(int i =0;i<x.length;i++) {
for(int j = 0;j<list.size();j++) {
if(i == list.get(j)) {
x[i] = value;
}
}
}
}
}
}
// 6 2 3 4 5 6 7 8 9 0 0 0
public static void update1 (int []x,int pre,int value,int size) {
if(x.length!=0) {
if(Search(x,pre)!=null) {
List<Integer> list = Search(x,pre);
for(int i = 0;i<size;i++) {
for(int j =0;j<list.size();j++) {
if(i == list.get(j)) {
x[i] = value;
FastSortSelf fast = new FastSortSelf();
fast.sort(x, 0, size-1);
}
}
}
}
}
}
public static void main(String[] args) {
int SIZE = 10;
int [] wuxu = new int[20];
wuxu[0] = 3;
wuxu[1] = 1;
wuxu[2] = 2;
wuxu[3] = 6;
wuxu[4] = 3;
wuxu[5] = 4;
wuxu[6] = 7;
wuxu[7] = 4;
wuxu[8] = 8;
wuxu[9] = 3;
System.out.print("无序数组删除之前的数组为 ");
for(int i = 0;i<SIZE;i++) {
System.out.print(wuxu[i]+"..");
}
System.out.println();
int delsize = delete(wuxu,3,SIZE);
System.out.print("无序数组删除3之后有 :"+delsize +"个元素,分别是:");
update(wuxu,6,66);
for(int i = 0;i<delsize;i++) {
System.out.print(wuxu[i]+"..");
}
System.out.println();
int [] order = new int [SIZE];
System.out.print("定义一个有序数组:");
for(int i = 0;i<SIZE;i++) {
order[i] = i+1;
System.out.print(order[i]+",");
}
int [] s = insert(order,11);
System.out.println("有序数组插入数据后的长度是"+s.length);
for(int i = 0;i<s.length;i++) {
System.out.print(s[i]+",");
}
System.out.println();
update1(order,4,44,SIZE);
System.out.println("有序数组更改4为44之后:");
for(int i = 0;i<SIZE;i++) {
System.out.print(order[i]+",");
}
int [] unorder = new int [20];
for(int i = 0;i<SIZE;i++) {
unorder[i] = (int) (Math.random()*10);
}
System.out.println();
SIZE = add(unorder,6,SIZE);
System.out.println("无需随机数组添加一个元素之后有"+SIZE+"个元素");
System.out.print("无需数组: ");
for(int i = 0;i<SIZE;i++) {
System.out.print(unorder[i]+",");
}
System.out.println();
List list = Search(order,9);
System.out.print("有序数组中有:"+list.size()+" 个 9,它的下标是:");
for(int i = 0;i<list.size();i++) {
System.out.println(list.get(i)+",");
}
List list1 = Search(unorder, 5);
System.out.print("无序随机数组查询的长度是"+list1.size()+"它们的下标分别是:");
for(int i = 0;i<list1.size();i++) {
System.out.print(list1.get(i)+",");
}
System.out.println();
for(int i = 0;i<order.length;i++) {
System.out.print(order[i]+",,");
}
}
}
结果显示:
无序数组删除之前的数组为 3..1..2..6..3..4..7..4..8..3..
无序数组删除3之后有 :7个元素,分别是:1..2..66..4..7..4..8..
定义一个有序数组:1,2,3,4,5,6,7,8,9,10,
有序数组插入数据后的长度是11
1,2,3,4,5,6,7,8,9,10,11,
有序数组更改4为44之后:
1,2,3,5,6,7,8,9,10,44,
无需随机数组添加一个元素之后有11个元素
无需数组: 1,1,6,0,5,5,7,2,8,7,6,
有序数组中有:1 个 9,它的下标是:7,
无序随机数组查询的长度是2它们的下标分别是:4,5,
1,,2,,3,,5,,6,,7,,8,,9,,10,,44,,