向一个顺序表中插上一个元素平均移动n+1
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/29 22:49:38
添加到第1个,移动N个;添加到第2个,移动(N-1)个;……添加到第N个,移动1个;添加到第(N+1)个,移动0个平均:(0+1+2+……+N)/(N+1)=N/2删除第1个,移动(N-1)个;删除第
/*850-597Pressanykeytocontinue*/#include <stdio.h>void Show(int a[],int n)
是这个意思吗?>>A=5:10A=5678910>>A(3)ans=7
已经有N个点了,再加一个就是N+1个.假设新加的结点插在第i位,那么后面N+1-i个结点都要往后移动.i的取值服从1到N+1的平均分布,即概率是1/(N+1).求期望得N/2,即平均要移动N/2个结点
这道题,可以进行举例来验证,比如要是在第一个元素前插入元素,需要移动n个元素.i=1时,需要移动n个,进行验证,只有B答案符合.所以B
就是一半,即是n/2
晕.不用那么麻烦.先转化为list(为什么不一开始就用List呢?)例:String[]arr=newString[]{"1","2"};Listlist=Arrays.asList(arr);直接调
具体移动次数取决于待删除元素所在的位置,比如删除倒数第1个,则移动次数为0,删除倒数第2个则移动次数为1,依此类推,删除倒数第i个,则需移动i-1次.而平均移动次数则取决于各待删除元素的位置及其被删除
(1)在顺序表中插入或删除一个元素,需要平均移动_约表长一半的____元素,具体移动的元素个数与_该元素在线性表中的位置____有关.(2)顺序表中逻辑上相邻的元素的物理位置__必须_____紧邻.单
题目没说明顺序表原先重复元素是否放在一起,例如4342.重复元素是4,但是你自己写的算法只能处理重复元素相邻放置的情况~
log(n)-1,下取整
0,1,2,3,4,5,6,...n-1,n每一个的可能是1/(n+1)(n+0)(n+1)/2/(n+1)=n/2
#include<stdio.h>int main(){\x05 int a[10];\x05 int i,j,val;\x05 
队头指针指向前一位置是为了方便插入新元素,队尾指针指向队尾元素是为了取出或删除队尾元素.
肯定是n-i啊,你就假设最后一个吧,i=n时,是不是不需要移动?那不就是n-n了嘛!有的人为什么说是n-i-1呢,那是因为此时i是用于循环的,当i=0时,代表第一个元素!此时你同样删除最后一个,那么i
#include#includeusingnamespacestd;#defineARRAY_SIZE10typedefintElemType;voidReplace(ElemTypev[],Elem
插入时,n/2;插入末尾,移动0个元素,插入表首移n个元素.平均就是n/2,(0+1+2……+n)/(n+1),因为有n+1个位置可供插入.删除时,最少0个,最多n-1个,结果是(0+1+2+……n-