数据结构
Cyjjing02
这个作者很懒,什么都没留下…
展开
-
寻找两个等长的有序序列的中位数
例如,若序列S1=(11,13,15,17,19),则S1的中位数是15,两个序列的中位数就是含它们所有元素的升序序列的中位数。这段代码主要就是分情况讨论,先按算法设计里的分成三种a和b比大小的情况,再在不相等的情况中根据元素个数奇偶情况来讨论,主要需要注意的是判断A、B的舍弃部分,以及起始索引在元素个数为偶数时舍弃较小部分那个序列的起始索引应从下中位开始,也就是我们向下取整求出的中位+1。③若a>b,则舍弃序列A中较大的一半,同时舍弃B中较小的一半,要求两次舍弃的长度相等。1)给出算法的基本设计思想。原创 2024-08-08 18:14:37 · 478 阅读 · 0 评论 -
数组循环左移
可将问题视为把数组ab转换为ba(a代表数组的前p个元素,b代表数组中余下n-p个元素),先将a逆置,再将b逆置,最后将整个逆置后的数组逆置得到ba。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1,...,Xn-1)变换为(Xp,Xp+1,...,Xn-1,X0,X1,...,Xp-1)。3)上述算法中三个Reverse函数的时间复杂度分别为O(p/2),O((n-p)/2),O(n/2),故所设计的时间复杂度为O(n),空间复杂度为O(1)。1)给出算法的基本思想。原创 2024-08-08 14:59:44 · 299 阅读 · 0 评论 -
将顺序表逆置,要求算法的空间复杂度为O(1)
此题来自王道算法的课后习题,写这个也是为了方便自己后续回顾理解,如有不妥欢迎指正。原创 2024-08-07 17:31:48 · 152 阅读 · 0 评论