- 数据结构主要研究的是数据怎么在计算机中组织和存储,是的我们可以高效的获取数据或修改数据。
- 算法可以节约更多的资源,让我们完成一些看起来本不该完成的任务,可将程序的运行速度提高数百万倍。
数组的各种方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataStructure
{
class Array1
{
private int[] data;//使用私有的是为了防止外部的成员访问数组,对其造成破坏
private int N;//动态数组实际存在的变量数
public Array1(int capacity)//方法
{
data = new int[capacity];
N = 0;
}
public Array1() : this(10) {
}//等价于下方的方法
//public Array1()
//{
// data = new int[10];
// N = 0;
//}
public int Capacity//数组容量
{
get {
return data.Length; }
}
public int Count//数组真实存储元素的个数
{
get {
return N; }
}
public bool IsEmpty
{
get {
return N == 0; }//=0返回true
}
//往数组添加元素
public void Add(int index, int e)//在数组index位置(此位置已有元素)添加元素
{
if(index<0||index>N)
{
throw new ArgumentException("数组索引越界");
}
if(N==data.Length)
{
ResetCapacity(2*data.Length);
}
for (int i = N - 1; i >= index; i--)//从index到N-1的元素都向后移动
{
data[i + 1] = data[i];
}
data[index] = e;
N++;
}
public void AddLast(int e)//在数组的末尾添加元素
{
Add(N, e);
}
public void AddFirst(int e)//在数组首位添加元素
{
Add(0, e);
}
//查询数组元素方法
public int Get(int index)
{
if(index<0||index>=N)
{
throw new ArgumentException("数组索引越界");
}
return data[index];
}
public int GetFirst()
{
return Get(0);
}
public int GetLast()
{
return Get(N - 1);
}
//数组中是否包含某元素
public bool Contains(int e)
{
for(int i=0;i<N;i++)
{
if(data[i]==e)
{
return true;
}
}
return false;
}
//查看数组元素存在哪个位置
public int IndexOf(int e)
{
for (int i = 0; i < N; i++)
{
if (data[i] == e)
{
return i;
}
}
return -1;
}
//删除数组里某个位置的元素
public int RemoveAt(int index)
{
if(index<0||index>=N)
{
throw new ArgumentException("索引超出数组界限");
}
int del = data[index];
for(int i=index+1;i<=N-1;i++)
{
data[i - 1] = data[i];
}
N--;
data[N] = default(int);
if (N == data.Length / 4)
ResetCapacity(data.Length / 2);
return del;
}
//简便方法
public int RemoveFirst()
{
return RemoveAt(0);
}
public int RemoveLast()
{
return RemoveAt(N - 1);
}