线性表(a1,a2,a3,…,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法用最少时间在表中查找数值为x的元素,并将其与后继元素位置相交换。如果线性表中找不到该元素,则将该元素插入表中并使表中元素仍递增有序。 根据设计思想,采用C或C++或J

admin2016-03-29  40

问题 线性表(a1,a2,a3,…,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法用最少时间在表中查找数值为x的元素,并将其与后继元素位置相交换。如果线性表中找不到该元素,则将该元素插入表中并使表中元素仍递增有序。
根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。

选项

答案算法的设计如下: void Search:ExchangeInsert(ElemType a[],ElemType x){ int low=0;int.high=n-l;int mid; //low和high指向线性表下界和上界的下标 while(low<=high){ mid=(low+high)/2; //找中间位置 if(a[mid]==x)break; //找到x,退出while循环 else if(a[mid]high){ //查找失败,插入数据元素x int i; for(i=n-1;i>high;i一一) a[i+1]=a[i]; //后移元素 a[low]=x; //插入 x } //结束插入 }

解析
转载请注明原文地址:https://kaotiyun.com/show/K2Ri777K
0

最新回复(0)