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);
}