
数据结构
文章平均质量分 78
说说互联网的那些事
毕业于中山大学,从事互联网电商多年,有着丰富的经验,平时擅长总结互联网技术,分享大厂的面试经验,微信公众号:说说互联网的那些事
展开
-
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关转载 2016-08-20 23:06:50 · 177 阅读 · 0 评论 -
数据结构--ArrayList03 要求通过空间复杂度O(1)实现删除所有x的元素
1)题目:对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x数据元素2)思路:d是元素移动的步长。从前往后依次遍历顺序表,当找到第一个等于x的元素时,d=1,该元素后面的元素都依次往前移动1个位置;当找到第二个等于x的元素时,d=2,该元素后面的元素依次往前移动2步;当找到第n个等于x的元素时,d=n,该元素后面的元素依次往前移动n...原创 2019-04-29 08:39:00 · 366 阅读 · 0 评论 -
数据结构--ArrayList04 删除有序顺序表中的s与t之间的值
1)题目:从有序顺序表中删除其值在给定s与t之间(要求s<t)的所有元素,如果s或t不合理或顺序表为空,则显示出错误信息并退出运行。2)思路:从头往后遍历数组,先找到s所在的位置,再从s开始往后找到t,统计s到t之间一共d个元素;t之后的元素依次往前移动d位,最后从后往前删除移动后空出来的d个空位。3)代码:源码中使用到的ArrrayList,是调用的是自己实现的Arra...原创 2019-04-29 12:19:32 · 448 阅读 · 0 评论 -
数据结构--ArrayList05 删除有序顺序表中的s与t之间的值,包含s与t值
1)题目:从有序顺序表中删除其值在给定s与t之间(要求s<t,包含s与t值)的所有元素,如果s或t不合理或顺序表为空,则显示出错误信息并退出运行。2)思路:统计t>=x>=s范围的个数d,t元素后面的元素依次往前移动d位,最后从后往前依次删除移动后空出的d位数的空间3)代码:源码中使用到的ArrrayList,是调用的是自己实现的ArrayList,自己实现的Ar...原创 2019-04-29 12:32:55 · 473 阅读 · 0 评论 -
数据结构--ArrayList06删除所有有序表中的重复元素
1)题目:从有序顺序中删除所有其值重复的元素,使表中所有元素的值均不同2)思路:该数组是有序的序列,所以重复的元素肯定是连一起的。从头到尾依次遍历数组,假设第一个在i位置重复的元素是a1,重复n1次,那么位移d=n1,最后一个a1元素后面的元素都向前移动d;接着从i=i+d开始向后依次遍历,找到第二个具有重复的元素a2,重复n2次,那么d=n1+n2,最后一个a2元素后面的元素向前移动d个...原创 2019-04-29 17:21:59 · 228 阅读 · 0 评论 -
数据结构--ArrayList07 合并两个有序顺序表为一个有序顺序表
1)题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表2)思路:listA,listB合并成listAB;len(listAB)=len(listA)+len(listB);同时从头到尾依次遍历listA和listB,假如listA[i]<listB[j],将listA[i]加入listAB中,i=i+1,j=j;假如listA[i]>listB[j],将lis...原创 2019-04-29 17:41:01 · 1209 阅读 · 0 评论 -
数据结构--ArrayList08 互换数组A中两个线性表的位置
1)题目:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3....am)和(b1,b2,b3....bn),试编写一个函数,将数组两个顺序表位置互换,即将(b1,b2,b3....bn)放在(a1,a2,a3....am)前面。2)思路:先整体翻转,然后两个线性表再分别翻转。空间复杂度是O(1)3)代码:源码中使用到的ArrrayList,是调用的是自己实现的Array...原创 2019-04-30 08:10:21 · 475 阅读 · 0 评论 -
数据结构--ArrayList09 用最小的时间在顺序表中寻找X值
1)题目:线性表(a1,a2,a3....an)中的元素递增有序且按顺序存储于计算机内,要求设计一算法,完成用最小时间在表中查找数值为x的元素,若找到则将其与后续元素位置交换,若找不到则将其查入表中并使表表中元素仍然有序递增。2)思路:从头到尾依次遍历,如果找到x,则跟其后面的元素互换位置;如果找不到,则将其插入有序表中。3)代码:源码中使用到的ArrrayList,是调用的是自己实现...原创 2019-04-30 08:34:39 · 362 阅读 · 0 评论 -
数据结构--ArrayList10 循环左移顺序表的元素
1)题目:设将n(n>1)个整数存放到一维数组R中,设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1......Xn-1)变换成(Xp,Xp+1,......Xn-1,X0,X1......Xp-1)。2)思路:1、将第一个数据存储到一个临时变量上; 2、将每个已经被复制过的数据的...原创 2019-04-30 17:39:04 · 400 阅读 · 0 评论 -
数据结构--ArrayList的实现原理源码
1)题目:ArrayList的实现原理源码2)思路:顺序表ArrayList,用数组表示,一组连续的地址空间。其实现的方法包括:初始化线性表 ArrayList(int initialSize) 在线性表末尾添加元素add(E e) 更新update,将第index各数据替换掉 update(E e, int index) 删除指定位置的元素removeToIndex(int ...原创 2019-04-29 07:56:04 · 559 阅读 · 0 评论 -
数据结构--ArrayList02 逆置顺序表的所有元素
1)题目:设置一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)2)思路:头尾元素依次交换3)代码:源码中使用到的ArrrayList,是调用的是自己实现的ArrayList,自己实现的ArrayList源码地址:https://blog.youkuaiyun.com/u012441545/article/details/89667486package com.sa...原创 2019-04-28 22:47:45 · 399 阅读 · 0 评论 -
一步一图一代码,一定要让你真正彻底明白红黑树
一步一图一代码,一定要让你真正彻底明白红黑树 作者:July 二零一一年一月九日-----------------------------本文参考:I、 The Art of Computer Programming Volume III、 Introduction to Algorithms, Second EditionIII、The Annota转载 2016-08-20 23:10:50 · 261 阅读 · 0 评论 -
百度测试开发笔试
1)长为N的数组A,元素大小范围是1~N-1,写一个算法判断数组A里是否有重复元素,要求复杂度为 O(n)。 import java.util.HashMap;import java.util.Map;public class DuplicateNum { public boolean duplicateNum(Object[] a) { Map原创 2016-09-02 20:00:21 · 1033 阅读 · 0 评论 -
插入排序算法
(1)插入排序1)简单插入排序一、思想将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。直接插入排序示例:如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。原创 2016-08-26 13:31:04 · 226 阅读 · 0 评论 -
选择排序算法
(1)简单选择排序1)基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。简单选择排序的示例: 2)操作方法:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;原创 2016-08-26 19:17:44 · 517 阅读 · 0 评论 -
交换排序
一、冒泡排序1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。冒泡排序的示例: 2)代码public class BubbleSort { public void bubbleSort(in原创 2016-08-26 22:23:28 · 598 阅读 · 0 评论 -
数据结构--ArrayList12 求主元素
1)题目:已知一个整数序列A=(a0,a1...an),其中0<=ai<n(0<=i<n),若存在ap1=ap2.....=apm=x,且m>n/2(0<=pk<n,1<=k<m),则称x为A的主元素,例如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素,假设A中的n个元素存在一...原创 2019-05-01 17:56:52 · 547 阅读 · 0 评论 -
数据结构--ArrayList13 求数组中未出现的最小正整数
1)题目:给定一个含n(n>=1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是42)思路与代码:源码中使用到的ArrrayList,是调用的是自己实现的ArrayList,自己实现的ArrayList源码地址:https://blog.youkuaiyun.com/...原创 2019-05-02 16:41:18 · 1052 阅读 · 0 评论 -
数据结构--ArrayList01删除最小元素
1)题目:从顺序表中删除具有最小值的元素(假设唯一),并由函数返回被删元素的值,空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。2)基本思路:该顺序表不是有序的顺序表,我们需要找出最小的元素以及这个元素的位置,所以通过从头到尾依次遍历的方式,找到最小的元素和最小元素的位置;然后用顺序表的最后一个元素替换该最小值元素。3)代码:源码中使用到的ArrrayList,是...原创 2019-04-28 18:29:38 · 730 阅读 · 0 评论 -
数据结构--ArrayList11 求中位数
1)题目:一个长度为L(L>=1)的升序序列S,处在第[L/2]位置的数称为S的中位数,例如,若序列S1=(11,13,15,17,19),则S1的中位数是15,两个序列的中位数是含他们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11,现在有两个等长升序序列A和B,设计一个在时间和空间复杂度尽可能高效的算法,找出A和B的中位数。2)思路与代码...原创 2019-05-01 13:01:46 · 897 阅读 · 0 评论