所用语言(C++)
顺序表有序插入方法1:
Status SqListInsert(SqList &L,ElemType e)//顺序表有序插入方法1 { int i,j,k; for(i=0;i<L.length;i++)//寻找e的插入位置 { if(L.elem[i]>=e) break; }k=i; for(j=L.length-1;j>=k;j--)//插入位置之后的元素后移 L.elem[j+1]=L.elem[j]; L.elem[k]=e; ++L.length; return OK; }
需要注意的是这里我采用一个变量k,用来得到此时大于等于e的值的元素的下标,即k是插入位置的下标,不是逻辑位置。
顺序表有序插入方法2:
Status SqListInsert(SqList &L,ElemType e)//顺序表有序插入方法2 { int i,j; while(i<L.length&&L.elem[i]<=e)//找到插入位置 { i++; } for(j=L.length-1;j>=i;j--)//插入位置之后的元素后移 L.elem[j+1]=L.elem[j]; L.elem[i]=e; ++L.length; return OK; }
此方法相较于第一个方法,少引入了一个变量,但两种方法无独有偶。如果大家更喜欢用i来表示逻辑位置,而不是下标,只需要改变相应循环的判断即可。