向顺序表L插入新元素x时可以由最后一个元素开始遍历,在遍历的同时进行移位赋值操作,如当遍历到的元素L.elem[i]比x大时,将L.elem[i]后移在下个元素的位置,而其所在位置则由x占有,当遍历到的元素L.elem[i]比x小时,则跳出循环,目的已经达到,具体算法如下:
void InsertOrderList(SqList &L, ElemType x)
// 在有序的顺序表 L 中保序插入数据元素 x
{
if(L.length==0) L.elem[0]=x;
else{
for(int i=L.length;i>=1;i--)
{
if(L.elem[i-1]>x) {L.elem[i]= L.elem[i-1];L.elem[i-1]=x;}
else {L.elem[i]=x;break;}
}
}
L.length++;
}
该方法比起有第一个元素开始遍历的算法高许多效率