package mo_ni_shu_zu;
/*定义一个数组类*/
public class Array {
int len; //数组长度
int cnt; //有效元素的个数
int[] arr;
int remove_value; //记录删除的元素的值
public Array(int len) {
cnt = 0; //有效元素个数刚开始为0,以cnt为下标的位置无值
this.len = len;
arr = new int[len]; //初始化数组,长度为len,值都为0
}
package mo_ni_shu_zu;
/*定义一个数组类*/
public class Array {
int len; //数组长度
int cnt; //有效元素的个数
int[] arr;
int remove_value; //记录删除的元素的值
public Array(int len) {
cnt = 0; //有效元素个数刚开始为0,以cnt为下标的位置无值
this.len = len;
arr = new int[len]; //初始化数组,长度为len,值都为0
}
/*判断数组是否为空*/
public boolean is_empty() {
if (cnt == 0)
return true;
else
return false;
}
/*输出数组*/
public void show_Array() throws EmptyException{
if(is_empty()){
throw new EmptyException("数组为空,无法输出");
}else{
for(int i = 0;i < cnt;i++){
System.out.println(arr[i]);
}
}
}
/*判断数组是否满*/
public boolean is_full(){
if (cnt == len)
return true;
else
return false;
}
/*数组追加元素*/
public boolean append_Array (int value) throws FullException {
if (is_full()) {
throw new FullException("数组已满,无法追加");
}else{
arr[cnt] = value;
cnt++;
return true;
}
}
/*在某个特定位置添加元素*/
public boolean insert_Array(int pos,int value) throws FullException {
if (is_full()) {
throw new FullException("数组已满,无法添加");
}else{
/*例如要在第三个位置添加,实际上是在下标为2的地方添加,
从最后一个位置的元素到下标为2的元素,依次向后移一位,
先移后添加
*/
for(int i = cnt;i > pos - 1; i--){
arr[i] = arr[i-1];
}
arr[pos - 1] = value;
cnt++; //添加后数组元素多一个,故++
return true;
}
}
/*删除某个位置元素*/
public boolean delect_Array(int pos)throws EmptyException{
if(is_empty()) {
throw new EmptyException("数组为空,无法删除");
}else if(pos < 1 || cnt < pos){ //若要删除的位置小于1或者大于数组有效元素的个数,则报错
return false;
} else{
/*同在某个位置添加元素,不同的先将元素删除,再把后面位置的元素依次向前移一位*/
remove_value = arr[pos - 1];
if(pos < cnt){
for(int i = pos;i < cnt;i++) {
arr[i - 1] = arr[i];
if (i == cnt - 1) {
cnt--;
}
}
}
}
return true;
}
/*数组元素倒置,此方法适用于有效元素个数为奇数或偶数*/
public void inversion_Array(){
int i = 0;
int j = cnt - 1; //最后一个元素的下标为cnt-1
int t;
while(i < j){
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
i++;
j--;
}
}
/*使用冒泡排序对数组进行排序(从小到大)*/
public void sort_Array(){
int t;
for(int i = cnt - 1;i > 0;i--){
for(int j = 0;j < i;j++){
if(arr[j] > arr[j+1]){
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}
}
}