1.指出以下算法中的错误和低效(即费时)之处,并将它改为一个既正确又高效的算法.
1个回答

第一题 这样改:

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;

}

看看是否符合你的要求.谢谢.如果符合请采纳