数组
数组的定义
概念:同一种类型数据的集合 其实数组就是一个容器
数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素
格式:
练习:
int[] arr = new int[] { 1, 2, 3 };
for(int x=0; x< arr.Length;x++)//小于数组的长度时 自增加
{
Debug.Log(arr[x]);//在控制台输出信息
}
结果:
获取最值
获取最大值
void Start () {
int[] arr = new int[] { 1, 10, 9, 4, 5, 6, 7, 6 };//数组的范围
GetMax(arr);//获取到这个函数的数组
}
public void GetMax(int[] arr)//创建新函数
{
int temp = arr[0];
for (int i = 1; i < arr.Length;i++)//当小于数组的长度时 自增加
{
if(arr[i]>temp)//判断是否后面的数大于temp
{
temp = arr[i];//大于的话 就赋值给temp 继续循环判断
}
Debug.Log("最大值是:" + temp);
}
}
结果:
获取最小值
与获取最大值方法类似
引用这个函数就好了
public void GetMin(int[] arr)
{
int temp = 0;
for (int i = 1; i < arr.Length; i++)//当小于数组的长度时 自增加
{
if (arr[i] < temp)//判断是否后面的数大于temp
{
temp = i;//大于的话 就赋值给temp 继续循环判断
}
Debug.Log("最小值是:" + arr[temp] + "下标是:" + temp);
}
}
并且这个函数可以出现数组的下标
选择排序
原理
数组里的第一个数 与 后面的数依次对比
最小(或最大)放前面 一轮一轮对比过去
直到全部待排序的数排完
练习:
void Start () {
int[] arr2 = new int[] { 5, 8, 4, 3, 6, 9, 7 };
SelectSort(arr2);
}
public void SelectSort(int[] arr)//选择排序函数 传一个数组回来
{
for (int i = 0; i < arr.Length; i++)//控制第几次排序
{
for (int j = i + 1; j < arr.Length; j++)//控制第i次排序 里需要比较几回
{
int temp = 0;
if (arr[i] > arr[j])//如果大于被比较的数话 就对换位置
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
Ergodic(arr);
}
public void Ergodic(int[] arr)//遍历数组 把数组中的每个元素都访问到
{
for(int i=0;i<arr.Length;i++)
{
Debug.Log(arr[i]);//在控制台显示出来
}
}
结果:
折半查找
原理:
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半
练习:
void Start () {
int[] arr4 = new int[] { 2, 3, 4, 5, 6, 7, 8, 9 };
int key = 8;
int x = Reduce(arr4, key);//引用这个函数 并输入8
if (x >= 0)
{
Debug.Log(key + "存在于arr4" +",角标是:" + x);
}
}
public int Reduce(int[] arr,int key)//折半查找 key是输入数字
{
int min = 0;//最小的下标等于0
int max = arr.Length - 1;//最大的下标 等于数组的长度减1
int mid = 0;//中间的下标
while(min <= max)//满足最小下标小于等于最大下标时
{
mid = (min + max) / 2;
if(key < arr[mid])//输入的数小于中间的下标
{
max = mid - 1;
}
else if(key > arr[mid])//输入的数大于中间的下标
{
min = mid + 1;
}
else
{
return mid;
}
}
return -1;//代表没找到
}
结果: