A-A+
设有一个顺序表A 其中的元素按值非递减有序排列 编写一个函数插入一个元素x后持该向量仍按递减
问题详情
设有一个顺序表A,其中的元素按值非递减有序排列,编写一个函数插入一个元素x后持该向量仍按递减有序排列。
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:非递减有序序列是一个按值从小到大进行排序的序列而且该序列中可能存在值相同的元素。本题的算法思想是:先找到适当的位置然后后移元素空出一个位置再将x插入。实现本题功能的函数如下:void insert(Sqlist&Aint nx) /*向量A的长度为n*/{int ij;if(x>=A[n])A[n+1]=x; /*若x大于最后的元素则将其插入到最后*/else{i=1;while(x>=A[i])i++; /*查找插入位置i*/for(j=njj>=i;j一一)A[j+1]=A[j]; /*移出插入x的位置*/A[i]=x;n++; /*将x插入向量长度增1*/}}
非递减有序序列是一个按值从小到大进行排序的序列,而且该序列中可能存在值相同的元素。本题的算法思想是:先找到适当的位置,然后后移元素空出一个位置,再将x插入。实现本题功能的函数如下:voidinsert(Sqlist&A,intn,x)/*向量A的长度为n*/{inti,j;if(x>=A[n])A[n+1]=x;/*若x大于最后的元素,则将其插入到最后*/else{i=1;while(x>=A[i])i++;/*查找插入位置i*/for(j=njj>=i;j一一)A[j+1]=A[j];/*移出插入x的位置*/A[i]=x;n++;/*将x插入,向量长度增1*/}}