当前位置: 首页 > news >正文

网站需要什么费用注册网站登录

网站需要什么费用,注册网站登录,学网站建设 赚钱,制作移动端网站价格1、A[n],k,将数组向右循环移动k位。要求时间复杂度O(n),空间O(1)。 思路:采用三次反转数组的操作,可以实现时间复杂度为O(n),空间复杂度为O(1)的算法。 void moveElem(int array[],int k,int length){//a…

1、A[n],k,将数组向右循环移动k位。要求时间复杂度O(n),空间O(1)。

思路:采用三次反转数组的操作,可以实现时间复杂度为O(n),空间复杂度为O(1)的算法。

void moveElem(int array[],int k,int length){//array是需要循环移动元素的数组,k是需要移动的位数,length是数组的长度int temp;//先将整个数组反转for(int i=0;i<=length/2;i++){temp=array[length-1-i];array[length-1-i]=array[i];array[i]=temp;}//再反转前K个元素,这样就使得原本在倒数k个位置的元素来到了数组前K个位置,相当于后k个元素都前进了k位for(int i=0;i<=k/2;i++){temp=array[k-1-i];array[k-1-i]=array[i];array[i]=temp;}//再反转下标为k到n-1的所有元素,相当于前n-k个元素后移了k位for(int i=k;i<=(length+k)/2-1;i++){temp=array[length+k-1-i];array[length+k-1-i]=array[i];array[i]=temp;}
}

2、给定一个无向无权图G,对所有顶点排序,按照每个顶点到顶点V的最短路径长度非增排序。要求时间复杂度O(n+e) n:顶点数 e:边数

bool visited[MaxVertexNum];               // 访问数组
char distSorted[MaxVertexNum];            // 保存排序信息
int len;                                  // 路径长度(或者理解为广度优先搜素层数)
void BFSTraverse(ALGraph G, int K, int v) // 邻接表存储图
{for (int i = 0; i < G.vernum; ++i){visited[i] = false; // 初始化访问数组dist[i] = -1;       // 初始化最短路径数组}Queue Q;InitQueue(Q); // 初始化队列;// 从顶点V开始搜索// 更新访问数组visited[v] = true;distSorted[0] = G.vertices[v].data;int i=0;// 将结点V入队EnQueue(Q, v);while (!IsEmpty(Q)){                  // 当队列不空时DeQueue(Q, v); // 队首顶点出队并用V保存该顶点for (ArcNode *p = G.vertices[v].firstarc; p; p->nextarc){                      // 检测所有V的邻接点int w = p->adjvex; // w即为邻接点if (visited[w] == false){ // 当前节点未访问// 更新访问数组visited[w] = true;distSorted[++i] = G.vertices[v].data;EnQueue(Q, w); // w入队}}}//给结点排序,由于广度优先搜索形成的结点是按照距离由小到大保存的,因此只要反转数组即可for(int i=0;i<=G.vernum/2;i++){char temp=distSorted[G.vernum-1-i];distSorted[G.vernum-1-i]=distSorted[i];distSorted[i]=temp;}
}

3、struct BinNode{

        int size;//以该结点为根的子树的总结点数

        BinNode *left,*right;

}

实现BinNode* rank(BinNode *t,int k)

功能为找到先根序列中第K个结点,返回其地址。要求:不使用先序遍历,且时间复杂度为0(depth(x)),depth(x)为结点x的深度。

BinNode *rank(BinNode *t, int k)
{if (!t)return nullptr; // 如果树为空,返回空// 如果第k个节点就是当前节点if (k == 1)return t;// 如果第k个节点在左子树中if (k <= t->left->size+1){return rank(t->left, k-1);}else{// 如果第k个节点在右子树中return rank(t->right, k - t->left->size - 1);}
}

按照先序遍历的规则,根节点是先序遍历中的第1个节点,然后先遍历完左子树才会遍历右子树,因此如果k小于左子树上节点的个数,那么说明第k个节点在其左子树上,因此继续往左寻找。而如果k大于左子树上的节点个数就说明k在右子树上,因此向右寻找。

http://www.yayakq.cn/news/556912/

相关文章:

  • 太原如何做百度的网站tool站长工具
  • 做个医院网站多少钱火锅自助餐网站建设
  • 东莞专业网站推广多少钱东莞网站模板
  • 网站建设税收编码中国企业库
  • 鲁谷网站建设网站建设知名公司
  • 旅游企业网站建设工作的通知投资公司的钱从哪里来
  • 企业展示型网站建设有什么好的建站公司
  • 北京建设执业注册中心网站公司建设网站的费用吗
  • 中国建设网官方网站建筑工程税率网站备案都有哪些
  • 非洲外贸平台有哪些网站优化 kps
  • 4网站建设哪里好点保安公司的网站设计比较好的
  • 门户网站有哪些工商注册深圳
  • 做哪类网站没有版权问题网站建设赶集网
  • 实训课做一个网站怎么做wordpress紫色大气淘宝客主题
  • 长沙做网站最好的公司会qt怎么做网站
  • 博客类网站怎么做如何做公司自己的网站
  • 专门做男士用品的网站电子类网站建设
  • 发软文在哪个网站找文章最好wordpress主题lenews
  • 我想建立个网站怎么弄想做苗木生意网站怎么怎么做
  • 武威网站制作公司哪个好网站流量 次
  • 旅游网站建设需求分析寮步网站制作
  • 做网站黑吃黑是什么罪学ui有前途吗
  • 网站导入开发手机app游戏公司
  • 合肥公司网站建设价格低北滘网站建设
  • 免费网站教程三河网站seo
  • 建设部质量监督官方网站网站开发属于软件开发服务吗
  • 杭州网站建设蒙特python 网站开发 视频
  • 建设银行哪个是假网站网站建设 兼职
  • 东莞网络建设推广长沙seo网络营销推广
  • 医疗网站备案要怎么做 需要准备什么材料哪个代运营公司比较好