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

1.指出以下算法中的错误和低效(即费时)之处,并将它改为一个既正确又高效的算法.ProcDeleteK(VARa:sqlist;i,k:integer);{从顺序存储结构的线性表a中删除自第i个元素起的K个元素}If(ia.last)thenerr

题目详情
1.指出以下算法中的错误和低效(即费时)之处,并将它改为一个既正确又高效的算法.
Proc DeleteK(VAR a:sqlist; i,k:integer);
{从顺序存储结构的线性表a中删除自第i个元素起的K个元素}
If (ia.last) then error (‘Argument invalid’)
else
for count:=1 to k do
【for j:=a.last downto i+1 do a.elem[j-1]:=a.elem[j];
a.last:=a.last-1 】
ENDP; {deleteK}
2.设顺序表Va中的数据元素递增有序.试写一算法,将X插入到顺序表的适当位置上,以保持该表的有序性.
▼优质解答
答案和解析
第一题 这样改:

for count:=1 to k do 【for j:=a.last downto i+1 do a.elem[j-1]:=a.elem[j]; a.last:=a.last-1 】
改成:
while(&a.elem[i+k]!=*(a.last)) do
a.elem[i]=a.elem[i+k];
i++;
end
if(&a.elem[i+k]==*(a.last))
a.elem[i]=a.elem[i+k];
第二题
假设va是数组,存有length个元素.
同时递增存储
va[length]=x;
for(i=length-1;i>=0;i--)
{
if(a[i]>a[i+1]){tmp=a[i+1];a[i+1]=a[i];a[i]=tmp;}
else break;
}
看看是否符合你的要求.谢谢.如果符合请采纳