C#数组常用算法以及在游戏中的具体应用
很久没有写东西了,近期会写一些东西。
我刚开始做Unity的时候,肯定也是避免不了找工作的,在很多公司面试的面试题中,对于算法的考察,冒泡排序,选择排序,二分查找等,这些是常常遇到的,哪怕是现在面试,也是一样。我觉得,还是举一些例子更加实际。
我还是很喜欢北京夏天的夜晚的,前几天去南方,真叫一个折腾。买了晚上8点回北京的票,结果晚点8小时,退了在买凌晨4点半的,结果还是晚点四个小时,之后,改签,操他大爷的,尽然还是晚点40分钟,南方真的好闷热,背上涨了一背的痱子。一冷一热,来了个多年不遇的感冒。我就抱怨一下,还是接着写东西。还是一样,在很多地方我会加上备注。
以下是常见两种在一维数组中寻找最值的方法
二分查找,在数组中查找已经给定数值的位置(下标)
二分查找前提是,被查找的数据必须是不重复的
思路:假设数据是按升序排序,对于给定的虚拟最大值x,首先从序列中间位置开始比较,如果当前位置的值等于x,则查找成功,若x小于当前位置的值,则在数列的前半段中查找 如果当前位置的值大于x,则在序列的后半段中继续查找,直到找到为止
数组的排序问题:选择排序和冒泡排序
选择排序
基本思想是:首先以数组中第一个元素为基准,从左到右开始查找,找出最小的元素和第一个元素替换。比如有数组A,以A[0]为基准,然后在A[0]到A[A.Length]中寻找最小值,然后跟A[0]替换 ,一直进行到基准位移到数组的最后一位
一维数组的冒泡排序
基本思想:将相邻的两个数比较,将较小的数调到前头,n个数就需要n-1次比较
第j趟,就需要n-j次比较
冒泡排序是相邻两个数进行比较
选择排序是前面一个数和后面的比自己大或者小的数替换位置,数与数之间并不相邻
今天就先到这里了,看世界杯了。