顺序查找
static int SeqSearch(int[] dateArray,int x)
{
int i;
for(i=0;i<dateArray.Length;i++)
{
if (dateArray[i] == x)
return i;
}
//if (i == dateArray.Length)
return -1;
}
//二分查找
///


/// 二分查找,对从小到大排序过的数据进行查找,效率极高
///

///
///
///
static int BinSearch(int[] datArray,int x)
{
int left = 0, right = datArray.Length - 1;
while(left <=right)
{
int mind = (left + right) / 2;
if (datArray[mind] > x)
right = mind - 1;
else if (datArray[mind] < x)
left = mind + 1;
else if (datArray[mind] == x)
return mind;
}
return -1;
}

     //递归阶乘
    static int Mtn(int n)
    {
        if (n == 0)
            return 1;
        else
            return n * Mtn(n - 1);
        /*int m = 1;
        for (int i = n; i >0; i--)
        {
            m *= i;
        }
        return m;*/
    }

    //递归二分查找
    static int BinarySearch_R(int[] dateArray,int x, int left,int right)
    {
        if(left <=right )
        {
            int mind = (left + right) / 2;
            if (x < dateArray[mind])
                return BinarySearch_R(dateArray, x, left, mind - 1);
            else if (x > dateArray[mind])
                return BinarySearch_R(dateArray, x, mind + 1, right);
            else if (x == dateArray[mind])
                return mind;
        }
        return -1;
    }
}

}
//递归快速排序
///


/// 递归快速排序
///

/// 数组
/// 0
/// 最大索引date.Length-1
static void QuickSort(int[] dateArray,int left,int right)
{
if (left < right)
{
int i = left;
int j = right + 1;
int pivot = dateArray[i];

            do
            {
                do i++; while (dateArray[i] < pivot&&i<dateArray.Length-1);//从左往右找出比基准值大的数
                do j--; while (dateArray[j] > pivot&&j>=0);//从右往左找出比基准值小的数
                if (i < j)
                {
                    swap(ref dateArray[i], ref dateArray[j]);//找到的小的值与找到的大的值交换位置
                }
            } while (i < j);
            swap(ref dateArray[left], ref dateArray[j]);//i,j相等时跳出循环,把基准值放到中间位置
            QuickSort(dateArray, left, j - 1);//左部分继续排序
            QuickSort(dateArray, j + 1, right);//右部分继续排序
        }
    }

Perm排列组合
static void Perautations(char[] s,int k,int m)
{
if(k==m)
{
for (int i = 0; i <= m; i++)
{
Console.Write(s[i]);
}
}
else
{
for (int i = k; i <= m; i++)
{
char temp = s[i];
s[i] = s[k];
s[k] = temp;
Perautations(s, k + 1, m);
char temp2 = s[i];
s[i] = s[k];
s[k] = temp2;
}
}
}