1、二分查找
/*step1:输入函数 合法性检查 (假定输入数组为单调递增)
* step2:获取个数
* step3:如果只有一个 则判断是否符合条件,符合直接返回 不符合则获取中间元素的值
* step4:如果中间元素目标值大于中间元素 则 查上半区,否则查下半区
*/
int* BinarySearch(int* pFirst,int* pEnd, int iTarget)
{
if(pFirst == NULL || pEnd ==NULL || pEnd-pFirst<0)
return NULL;
int n=pEnd-pFirst+1;
if(n==1)
{
if(*pFirst == iTarget)
return pFirst;
else
return NULL;
}
int* pMid=pFirst+n/2;
if(*pMid == iTarget)
return pMid;
else if(*(pMid)<iTarget)
return BinarySearch(pMid+1,pEnd,iTarget);
else
return BinarySearch(pFirst,pMid-1,iTarget);
}
2、逆序
void Reverse(int* pFirst,int* pEnd)
{
if(pFirst == NULL || pEnd ==NULL || pEnd-pFirst<0)
return;
int n=pEnd-pFirst+1;
int nMid=n/2;
//调换从0到 nMid-1位置
for(int i=0;i<nMid;++i)
{
swap(pFirst+i,(pEnd-i));
}
}