早教吧 育儿知识 作业答案 考试题库 百科 知识分享

设顺序表L是一个递增有序表。编写算法,要求利用二分查找法确定插入位置,将元素x插入到L中,使L保持有序(1)描述算法的基本设计思想:(2)描述算法的详细实现步骤(使用C或C++或Ja

题目详情
设顺序表L是一个递增有序表。编写算法,要求利用二分查找法确定插入位置,将元素x插入到L中,使L保持有
序(1)描述算法的基本设计思想:
(2)描述算法的详细实现步骤(使用C或C++或Java语言实现)。
▼优质解答
答案和解析
int BinarySearch(int array[],int length,int elem) // 二分查找插入位置
{
int low=0;
int high=length-1;
int mid=0;
while(low<=high)
{
mid=low+((high-low)>>1);
if(array[mid]==elem)
return mid+1;
else if(array[mid]>elem)
high=mid-1;
else
low=mid+1;
}
return low;
}
void insert(int L[],int length, int elem,int capacity) //在L相应位置插入元素x的算法
{
if(NULL==L||length<=0||capacity return;
int index=BinarySearch(L,length,elem);
for(int i=length;i>index;i--)
{
L[i]=L[i-1];
}
L[i]=elem;
return;
}