算法实现(一)

1、 不使用中间变量,一句代码实现两个数值的交换

int a = 20, b = 30;
a =b+ (b = a)*0;
Console.WriteLine("a={0},b={1}", a, b);
输出的结果是a=30,b=20

2、 字符串反转,ABC-----》CBA

第一个字符和最后一个字符交换,第二个字符与倒数第二个字符交换,以此类推

private static string  ReverseString(string input)
{
      char[] chs = input.ToCharArray();
      for (int i = 0; i < chs.Length / 2; i++)
      {
            char cTemp = chs[i];
            chs[i] = chs[chs.Length - 1 - i];
            chs[chs.Length - 1 - i] = cTemp;
       }
       return new string(chs);
 }
3、 顺序查找:在数组a的前n个元素中查找x

按顺序逐个比较,直到找到或找不到。

int Search ( int []num, int n, int x )
{
   for (int  i=n-1; i>=0; i-- )
      if ( num[i]==x ) return i;
   return -1;  // -1表示找不到
}

所有执行路径都要有正确的返回值,不要忘记最后那个return语句。

4、折半查找

待查找的表必须是有序的,先从中间开始比较,比较一次至少抛弃一半元素,逐渐缩小范围,直到查找成功或失败。

int BinarySearch ( int []a, int n, int x )
{
   Int low = 0,high = n-1;
   while ( low <= high ) {
     int mid = ( low + high )/2;  	// 折半
     if ( a[mid]==x )
       return mid;  // 找到
     else if ( x<a[mid] )  	// x位于低半区 [low..mid-1]
       high = mid -1;
     else  	// x位于高半区 [mid+1..high]
       low = mid + 1;
   }
   return -1;  // -1表示未找到
}

递归版本

int BinarySearch (int []a, int low, int high, int x )
{
   if ( low>high )  return -1;   	// 查找失败
   int mid = (low+high)/2;  	// 折半
   if ( a[mid]==x )
     return mid;  // 找到
   else if ( x<a[mid] )
     return BinarySearch (a, low, mid-1, x);
   else
     return BinarySearch (a, mid+1, high, x);
}


转载于:https://www.cnblogs.com/yantmyu/p/5661674.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值