有关顺序表中各操作算法的总结

此类问题均有通用解法,对于无序数组可先对其排序变为有序数组,再利用二分法定位某值,或者利用创立大小够大的新数组来对原数组进行计数(如:a【5】=2,即为原数组有2个5)。

  此类问题有以下几类:

     删除某无序表中某固定元素x:算法1:设置一个工作参数为j,j用来计数不等于x的元素的个数,对列表遍历,定义a【j】=a【i】

 

                                                      算法2:设置一个工作参数为j, j用来计数等于x的元素的个数,对列表遍历,定义a【i-k】=a【i】

                        

                                                      算法3:设置两个工作指针首末i,j;对列表进行遍历,当i指向值为x的地址时,可将j的值移动到

                                                                   i处(j不指向x);此算法能删除x,但会打乱原数组中排序。

                                                   

                                                      算法4:对该表排序。(最复杂,复杂度为o(n2))

        从无序表中删除重复元素  : 算法1:对该无序表进行排序

                                                      算法2:设置一个工作参数j,j用来计数等于多余元素的个数,对每一个元素,遍历表。复杂度为o(n2

                                                      算法3:设置一个足够大的数组a【n】={0},对a【数组每个元素】++,可对原数组计数。此算法复杂度为o(n),但耗费空间,且                                                                       只适用于非负整数数组。

                                                      算法4:利用哈希(?)

     从两个升序序列中取得其中位数: 算法1:对两个序列进行排序

                                                            算法2:将两个序列均进行二等分,去掉中间值大的序列的右边,中间值小的左边,无限进行等分。

转载于:https://www.cnblogs.com/xuehongyang/p/10420912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值