题目:
算法分析:
有序数组查询使用二分查找
记住分界条件,最后一个元素不需要交换;
详细编码:
void Search(Sqlist A,Elemtype x,int left,int right)
{
int len=A.length();
Elemtype temp;
while(left<=right)
{
mid=(left+right)/2;
if(A[mid]==x)
break;
else if(A[mid]>x)
right=mid-1;
else
left=mid+1;
}
if((mid!=len-1)&&(A[mid]==x))
{
temp=A[mid];
A[mid]=A[mid+1];
A[mid+1]=temp;
}
if(left>right)//查找失败
{
for(int i=n-1;i>right;i--)
{
A[i+1]=A[i];//将元素逐步后移
}
A[i+1]=x;//要在right的后一个位置进行插入
}
}