2.1趣說什麼是陣列,以及資料的讀取、更新、插入、刪除等操作程式碼(2)

王先森001發表於2020-12-04

一 什麼是陣列?
大夥都知道在軍隊裡,每一個士兵都有自己的固定的位置、固定的編號,眾多士兵緊密的排列在一起,高效地執行著一個個命令。
有一個資料結構就像數軍隊一樣 整齊、有序,這個資料結構叫做陣列。
陣列是有限個相同型別資料的集合,陣列的每個變數稱為元素。陣列是最為簡單、最為常用的資料結構。

二、怎麼樣使用陣列呢?

資料結構的操作無非是增、 刪、改、 查 4種情況。

三 陣列元素的基本操作

1.讀取元素
假設一個名稱為array的陣列,我們讀取下標為3的元素,就寫作array[3];讀取下標為5的元素,就寫作array[5];
像這樣下標讀取的方式叫作隨機讀取。
簡單的程式碼示例:
int array[] =new int[]{3,2,4,2,5,6,8,9};
System.out.println(array[3]);

2 更新陣列元素
要把陣列中的某個元素,替換成新值。操作也比較簡單。
簡單的程式碼示例。
int array[] =new int[]{3,2,4,2,5,6,8,9};
array[3] =10;
System.out.println(array[3]);

3.1插入元素

插入陣列元素 分為3中情況。
尾部插入
中間插入
超範圍插入

尾部插入最簡單,直接把插入的元素放在陣列尾部空閒的位置即可,等同於更新元素的操作。

中間插入稍微複雜一些,即把插入位置以及後面的元素一一向後以後,在把插入的元素放在對應陣列響應的位置上。

private int array[];
private int size;

public MyArray(int capacity)
{
this.array = new int[capacity];
size = 0;
}

/陣列插入元素/
/*
*@param element 插入的元素
*@param index 插入的位置
*
*/

public void insert (int element ,int index )throws Exception
{
if(index < 0 || index >size)
{
throw new IndexOutOfBoundsException("
超出陣列實際元素");

     }
	for(int i = size; i >=index  ; i--)
	{
		   array[i+1] = array[i];
  }
//騰出的位置放入新元素
  array[index ] = element ;

}

/*
*
*輸出陣列
*/

public void output()
{
for (int i=0; i<size;i++)
{
System.out.println(array[i]);
}
}

public static void main(String[] args)
{
MyArray myArray = new MyArray(10);
myArray .insert(3,0);
myArray .insert(7,1);
myArray .insert(9,2);
myArray .insert(7,3);
myArray .output();
}

3.2 超範圍插入

假如一個陣列的大小為8,元素已經滿啦,現還要插入一個元素就要擴容啦。

private int array[];
private int size;

public MyArray(int capacity)
{
this.array = new int[capacity];
size = 0;
}
/陣列插入元素/
/*
*@param element 插入的元素
*@param index 插入的位置
*
*/

public void insert (int element ,int index )throws Exception
{
if(index < 0 || index >size)
{
throw new IndexOutOfBoundsException("
超出陣列實際元素");

     }
    if(size >=array.legth )
    {
			resize();
    }
	for(int i = size; i >=index  ; i--)
	{
		   array[i+1] = array[i];
  }
//騰出的位置放入新元素
  array[index ] = element ;
  size++;

}

/*
*
*陣列擴容
/
public void resize()
{
int arrayNew[] = new int[array.legth
2]
System.arraycopy(array,0,arrayNew,0,array.legth);
array =arrayNew;
}

/*
*
*輸出陣列
*/

public void output()
{
for (int i=0; i<size;i++)
{
System.out.println(array[i]);
}
}

public static void main(String[] args)
{
MyArray myArray = new MyArray(3);
myArray .insert(3,0);
myArray .insert(7,1);
myArray .insert(9,2);
myArray .insert(7,3);
myArray .output();
}

4 刪除元素

陣列的刪除操作與插入操作正好相反,在刪除的位置所有的元素都向前移動一位。
/陣列刪除元素/
/*
*@param index 刪除的位置
*
*/

public void delete (int index )throws Exception
{
if(index < 0 || index >size)
{
throw new IndexOutOfBoundsException("
超出陣列實際元素");

     }
    int   delectElement = array[index  ];
  for(int i= index  ; i < size-1;i++)
  {
  		  array[i] = array[i +1];
  }
  size --;
  return delectElement ;

}

5 陣列的優勢和劣勢

陣列的優勢:優勢體現在高效地隨機訪問能力,有一種高效地查詢法,就是利用了陣列的這個優勢。

陣列的劣勢:劣勢體現在插入與刪除,插入與刪除元素將導致大量元素被騙移動,影響效率。

總的來說,陣列適合用在讀操作多,寫操作少的場合。

相關文章