二、基础查找算法

有两种对列表内数据进行查找的方法,顺序查找和二叉查找。当数据项在列表内随机排列的时候可以用顺序查找,当数据在列表内有序排列的时候则会用到二叉查找。(抄点书上原话:助于理解,哈哈。)

(一)顺序查找

最常见的查找类型就是从记录集的开始出顺次遍历每条记录,直到找到所要的记录或者是达到数据集的末尾,这就是顺序查找。顺序查找是非常容易实现的,从数组的起始处开始,把每个访问到的数组元素一次和所需要查找的数值进行比较,如果相同就说明找到了,否者就没有找到。代码 如下:

 

        /// <summary>
        
/// 顺序查找
        
/// </summary>
        
/// <param name="arr"></param>
        
/// <param name="searchNum"></param>
        
/// <returns></returns>
        static int SeqSearch(int[] arr,int searchNum)
        {
            
for (int i = 0; i < arr.Length; i++)
            {
                
if (arr[i] == searchNum)
                    
return i;

            }
            
return -1;
 
        }

 

 

有时候我们需要查找最小值和最大值,在一个有序的数组中查找最小和最大值是非常容易的,但是往往一般数组都是无序的,对于无序的数组我们的算法是(假如我们要找最大值):

  1. 把数组的第一个元素作为最大值给一个变量。
  2. 开始循环遍历数组,把他之后的每一个数和设定的最大值进行比较,如果比最大值还大,那么他们进行交换。
  3. 当循环结束后,返回的值便是最大的值。

代码如下:

 

        /// <summary>
        
/// 查找最大最小
        
/// </summary>
        
/// <param name="arr">数组</param>
        
/// <param name="findType">查找类型,0查找最大,1查找最小</param>
        
/// <returns></returns>
        static int Find(int[] arr, int findType)
        {
            
//找最大值
            if (findType == 0)
            {
                
int big = arr[0];
                
for (int i = 1; i < arr.Length; i++)
                {
                    
if (arr[i] > big)
                    {
                        big 
= arr[i];
                    }

                }
                
return big;
 
            
            
            }
            
else if (findType == 1)
            {
                
int min = arr[0];
                
for (int i = 1; i < arr.Length; i++)
                {
                    
if (arr[i] < min)
                    {
                        min 
= arr[i];
                    }

                }
                
return min;

            }
            
else
            {
                
return -1;
            }
 
        }

 

 

posted @ 2009-12-31 17:17  肥嘟嘟左卫门  阅读(238)  评论(0)    收藏  举报