大家好,Unity游戏开发中的高效排序与查找算法实现相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Unity游戏开发中的高效排序与查找算法实现和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
使用系统集合;
公共类QuickSort : MonoBehaviour {
//定义一个数组
私有int[] 数组=new int[] { 5, 9, 3, 1, 4, 7, 2 };
无效唤醒()
{
//调用排序方法
QuickSortArray(数组, 0, 数组.Length - 1);
//打印数组
foreach(数组中的int 项)
{
调试日志(项目);
}
}
//////快速排序方法
//////数组///数组的起始位置//数组的结束位置void QuickSortArray(int[] array, int start, int end)
{
//如果数组中的数字小于等于0,则直接返回
如果(开始=结束)返回;
//定义一个基值
int 数据透视=数组[开始];
//定义2个索引,分别指向数组的开头和结尾
int 左=开始;
int右=结束;
//从小到大排序,直到2个数字相遇结束排序
同时(左、右)
{
//第一轮比较
//将left右边的所有数字与参考值进行比较,排序后得到数组中最左边的数字的位置(索引)
while (左右数组[右]=枢轴)
{
正确的- ;
}
//将数字放入数组中该位置
数组[左]=数组[右];
//第二轮比较
//将left右边的所有数字与参考值进行比较,排序后得到数组中最左边的数字的位置(索引)
while (左右数组[左]=枢轴)
{
左++;
}
//将数字放入数组中该位置
数组[右]=数组[左];
}
//将数组经过2轮比较后的起始值作为基值(已获得最大值,处于最后位置)
数组[左]=枢轴;
//递归该方法(每次删除一个排名号)
QuickSortArray(数组, 开始, 左- 1);
QuickSortArray(数组, 左+ 1, 结束);
}
}2.演示结果如下
Quick sort.gif
二、二分查找
1、简介
二分查找也称为半查找。其优点是比较次数少、查找速度快、平均性能好。其缺点是要求查表是有序表,插入和删除比较困难。因此,二分查找法适用于不经常变化但查找频繁的有序列表。首先,假设表格中的元素按升序排列,将表格中间位置记录的关键字与搜索关键字进行比较。如果两者相等,则查找成功;否则,使用中间位置记录将表分为两个子表,第一个和最后一个。如果中间位置记录的关键字大于搜索关键字,则继续查找上一个子表,否则继续查找下一个子表。重复上述过程,直到找到满足条件的记录,则查找成功,或者直至子表不存在,则查找失败。简单来说,使用的原理就是我们中学时学过的二分查找。空间复杂度为O(n),时间复杂度为O(log(n))。
2、伪算法图
二分查找.jpg.png
注意,用于二分查找的数组必须是排序数组。
3、结合快速排序的算法写的二分查找代码
使用系统;
命名空间QucikSortDemo
{
班级计划
{
静态无效主(字符串[]参数)
{
//定义数组
int[] 数组=新int[] { 5, 8, 6, 1, 3, 4, 2, 7 };
//快速排序
QuickSort(数组, 0, 数组.Length - 1);
//二分查找
BinSearch(数组, 数组.Length,5);
Console.ReadKey();
}
//////二分查找
/////////////////static int BinSearch(int [] array,int arrayLength,int key)
{
//最小索引
int 低=0;
//最大索引
int high=数组长度;
//中间索引
int 中=(低+ 高)/2;
//直到最小索引小于最大索引,跳出循环
而(低=高)
{
//如果中间值是所有搜索到的key
if (数组[mid]==键)
{
//输出中间数字键
Console.WriteLine("数字{0}存在,数组中索引为{1}", key, mid);
中途返回;
}
//当中间的数字大于key时,查找左边的数字
if(数组[中]键)
{
中- ;
}
//中间的数字小于key,搜索右侧
别的
{
中++;
}
}
//否则,在输出中找不到值
Console.WriteLine("编号{0}不存在", key);
返回-1;
}
//////快速排序算法
////////////static void QuickSort(int [] array ,int start , int end)
{
int 左=开始;
int右=结束;
如果(开始=结束)
{
返回;
}
int privot=数组[左];
同时(左、右)
{
while (左右数组[右]=privot)
{
正确的- ;
}
数组[左]=数组[右];
while (左右数组[左]=privot)
{
左++;
}
数组[右]=数组[左];
}
数组[左]=privot;
QuickSort(数组, 开始, 结束- 1);
快速排序(数组,开始+1,结束);
}
}
OK,关于Unity游戏开发中的高效排序与查找算法实现和的内容到此结束了,希望对大家有所帮助。
【Unity游戏开发中的高效排序与查找算法实现】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
Unity做游戏还是学习算法都能用到啊!
有18位网友表示赞同!
这两东西好像都没啥难度,高中就能学吧?
有5位网友表示赞同!
感觉Unity优化很重要的一块呀,这俩算法能提升性能?
有14位网友表示赞同!
我要是程序员的话也好想试试用代码写排序和查找.
有18位网友表示赞同!
学习游戏开发还得基础知识补好才行啊,这两算法确实管用。
有5位网友表示赞同!
看下这篇教程,我最近打算学习Unity做一个简单的小游戏。
有5位网友表示赞同!
好像这俩算法在其他编程语言里也能用吧?
有16位网友表示赞同!
排序和查找是计算机基础知识,真厉害的程序员这些都得牢记.
有6位网友表示赞同!
感觉Unity越学越深入啊,还有很多奥妙待探索!
有16位网友表示赞同!
学习Unity需要学的知识还真不少呢, gotta start somewhere!
有15位网友表示赞同!
分享学习资源的好机会,谢谢大佬!
有16位网友表示赞同!
Unity做游戏可不止这招吧?还有哪些算法可以用呢?
有16位网友表示赞同!
感觉快速排序和二分查找还挺有用的,可能以后要用到?
有8位网友表示赞同!
有没有什么好教程推荐?最近想学习Unity开发。
有18位网友表示赞同!
讲道理,游戏开发确实很综合,知识面大!
有20位网友表示赞同!
Unity官方文档上也会介绍这些算法吗?
有10位网友表示赞同!
感觉排序和查找算法很多种哎!这篇文章详细讲解哪个?
有15位网友表示赞同!
这篇看完了再去玩Unity的游戏体验会不一样吗? haha!
有10位网友表示赞同!
我想学做手机游戏,先要把代码基础打好。
有16位网友表示赞同!
学习新技术总是有点困难,但收获总比付出多得多!
有18位网友表示赞同!