package arrayDemo;
public class MyArray {
//定义一个数组
private int[] array;
//数组的下标
private int elments=0;
/**
* 无参构造函数初始化数组,默认长度10
*/
public MyArray() {
array = new int[10];
}
/**
* 有参构造函数。定义初始化数组长度
* @param size
*/
public MyArray(int size) {
array=new int[size];
}
/**
* 向数组插入有序元素
* @param value
*/
public void insert(int value) {
int i;
for(i=0;i<elments;i++) {
if(array[i]>value) {
break;
}
}
for(int j=elments;j>i;j--) {
array[j]=array[j-1];
}
array[i]=value;
elments++;
}
/**
* 根据数组下标修改数组元素
*/
public void update(int k,int value){
if(k>=elments || k<0) {
throw new ArrayIndexOutOfBoundsException(k+"的值过大");
}else {
array[k]=value;
}
}
/**
* 根据元素查询数组下标
*/
public int find(int value) {
int i;
for(i=0;i<elments;i++) {
if(value==array[i]) {
break;
}
}
if(i==elments) {
return -1;
}else {
return i;
}
}
/**
* 根据数组下标查询数组元素
* @param index
* @return
*/
public int getelment(int index) {
if(index>=elments || index<0) {
throw new ArrayIndexOutOfBoundsException("index超出数组的下标");
}else {
return array[index];
}
}
/**
* 根据下标删除数组的元素
*/
public void delete(int index) {
if(index>=elments || index<0) {
throw new ArrayIndexOutOfBoundsException("index超出数组的下标");
}else {
for (int i = index; i < elments; i++) {
array[i]=array[i+1];
}
elments--;
}
}
/**
* 冒泡排序
* 从小到大
*/
public void sort() {
for(int i=0;i<elments;i++) {
for(int j=elments-1; j>i;j--) {
if(array[i]>array[j]) {
int tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
}
}
/**
* 选择排序
* 从大到小
*/
public void changeSort() {
toMyArray();
int tmp=0;
for(int i=1;i<elments;i++) {
int index=0;
for(int k=1;k<=elments-i;k++) {
if(array[k]<array[index]) {
index=k;
System.out.println(index+" "+i+" "+elments);
}
}
tmp=array[elments-i];
array[elments-i]=array[index];
array[index]=tmp;
toMyArray();
}
}
public void toMyArray() {
System.out.print("[ ");
for(int i = 0;i<elments;i++) {
System.out.print(array[i]+" ");
}
System.out.println("]");
}
}