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

百度验证网站所有权app开发公司资质

百度验证网站所有权,app开发公司资质,学科建设的网站,手机app下载安装免费下载数据结构–顺序表的基本操作–插入 顺序表的插入操作 实现目标 ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 typedef struct {int data[MaxSize];int len; }Sqlist;代码实现&#xff1a; #include <stdio.h> #include <stdlib.h> …

数据结构–顺序表的基本操作–插入

顺序表的插入操作

实现目标

ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。

typedef struct
{int data[MaxSize];int len;
}Sqlist;

代码实现:

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10 //定于的最大长度typedef struct
{int data[MaxSize];int len;
}Sqlist;
void InitList(Sqlist &L)
{L.len = 0;
}
bool ListInsert(Sqlist &L, int idx, int e)
{if (idx > L.len + 1 || idx < 1) //判断是否合法return false;if (L.len >= MaxSize)return false;for (int j = L.len; j >= idx; j--) //将第idx个元素及之后的元素后移L.data[j] = L.data[j - 1];  L.data[idx - 1] = e;    //在位置i处放入eL.len++;    //长度加1return true;
}
int main()
{Sqlist L;InitList(L);if (ListInsert(L, 1, 1))printf("Inserted successfully\n");if (ListInsert(L, 2, 2))printf("Inserted successfully\n");// 测试结果for (int i = 0; i < L.len; i++)printf("%d ", L.data[i]);
}

ps:
好的算法,应该具有“健壮性”能处理异常情况,并给使用者反馈。

时间复杂度

最好情况:新元素插入到表尾,不需要移动元素 idx = n+1,循环0次;
最好时间复杂度 \color{red}最好时间复杂度 最好时间复杂度=O(1)
最坏情况:新元素插入到表头,需要将原有的n个元素全都向后移动 idx= 1,循环n次;
最坏时间复杂度 \color{red}最坏时间复杂度 最坏时间复杂度= O(n);
平均情况:假设新元素插入到任何一个位置的概率相同,即idx= 1,2,3, … len+1的概率都是 p = 1 n + 1 p=\frac{1}{n+1} p=n+11 idx = 1,循环n次;idx=2时,循环n-1次; idx=3,循环n-2次…idx=n+1时,循环0次
平均循环次数 = n p + ( n − 1 ) p + ( n − 2 ) p + . . . + 1 p = n ( n + 1 ) 2 × 1 n + 1 = n 2 np + (n-1)p + (n-2)p + ... + 1p = \frac{n(n + 1)}{2} \times \frac{1}{n + 1} = \frac{n}{2} np+(n1)p+(n2)p+...+1p=2n(n+1)×n+11=2n
平均时间复杂度 \color{red}{平均时间复杂度} 平均时间复杂度 = O(n)

顺序表的删除操作

实现目标

ListDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。

代码实现

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10 //定于的最大长度typedef struct
{int data[MaxSize];int len;
}Sqlist;
void InitList(Sqlist &L)
{L.len = 0;
}
bool ListInsert(Sqlist &L, int idx, int e)
{if (idx > L.len + 1 || idx < 1) //判断是否合法return false;if (L.len >= MaxSize)return false;for (int j = L.len; j >= idx; j--) //将第idx个元素及之后的元素后移L.data[j] = L.data[j - 1];  L.data[idx - 1] = e;    //在位置i处放入eL.len++;    //长度加1return true;
}
bool ListDelete(Sqlist &L, int idx, int &e)
{if (idx > L.len && idx < 1) //判断i的范围是否有效return false;e = L.data[idx - 1];    //将被删除的元素赋值给efor (int j = idx - 1; j < L.len; j++)   //将第i个位置后的元素前移L.data[j] = L.data[j + 1];L.len--;    //线性表长度减1return true;
}
int main()
{Sqlist L;InitList(L);if (ListInsert(L, 1, 1))printf("Inserted successfully\n");if (ListInsert(L, 2, 2))printf("Inserted successfully\n");int e = -1;if (ListDelete(L,1,e))printf("Deleted successfully\n");// 测试结果for (int i = 0; i < L.len; i++)printf("%d ", L.data[i]);
}

时间复杂度

最好情况:删除表尾元素,不需要移动其他元素 idx= n 循环0次;
最好时间复杂度 \color{red}最好时间复杂度 最好时间复杂度=O(1)
最坏情况:删除表头元素,需要将后续的n-1个元素全都向前移动 idx= 1,循环 n-1 次;
最坏时间复杂度 \color{red}最坏时间复杂度 最坏时间复杂度= O(n);
平均情况:假设删除任何一个元素的概率相同,即 idx= 1,2,3. … , len的概率都是 p = 1 n p=\frac{1}{n} p=n1
idx = 1,循环 n-1 次; idx=2 时,循环n-2次; idx=3,循环n-3 次… idx = n 时,循环 0 次
平均循环次数 = ( n − 1 ) p + ( n − 2 ) p + . . . . . . + 1 p = n ( n − 1 ) 2 × 1 n = n − 1 2 (n-1)p+(n-2)p+......+1p = \frac{n(n-1)}{2} \times \frac{1}{n} = \frac{n-1}{2} (n1)p+(n2)p+......+1p=2n(n1)×n1=2n1
平均时间复杂度 \color{red}平均时间复杂度 平均时间复杂度 = O(n)

知识点回顾与重要考点

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

相关文章:

  • 长沙哪个网站建设最好如皋建设工程局网站
  • 做网站优化推广的好处义乌网站建设公司书生商友
  • 国外工装设计网站大全公众号开发用什么工具
  • 做幼儿手工网站做英文网站需要多长时间
  • 网站移动端是什么免费个人服务器
  • 教育网站建设改版360网站页面的工具栏怎么做
  • 信息网站有哪些网站建设需要用到iis吗
  • fullpage网站怎么做网站栏目优化
  • 网站源码怎么做网站正能量晚上看的网站2021
  • 福州定制网站开发制作梧州网站制作公司
  • 成都高端网站免费制作音乐的软件app
  • 桐城市美丽乡村建设专题网站网站seo基本流程
  • 工信部网站备案查询 手机网站怎么做 织梦
  • 做网站打电话怎么和客户说做简单网站需要学什么软件
  • 镇江网站建设制作企业电影点评wordpress主题
  • 什么是建设型的网站手机网站开发开发
  • 新的购物网站怎么做流量分析河北建设厅网站打不开是什么原因
  • 北京华兴森茂印刷网站建设项目临淄关键词网站优化首选公司
  • 网站开发需求文档模板国内知名网站建设
  • 电子商务网站建设服务外包做外贸网站违法吗
  • 合肥网站设计服务wordpress建站社区
  • 装饰公司响应式网站建设案例seo服务的内容
  • 最佳线上网站制作模板网站建设公司如何盈利
  • 网站设计的公司概况简介保亭住房和城乡建设局网站
  • 南通营销型网站建设个人网站特点
  • 百度网站的优缺点郑州百度seo排名公司
  • 普通电脑可以做网站服务器广告设计公司图片
  • 做宠物网站需要实现什么功能企查查在线查询
  • 哈尔滨网站建设公司哪家好网站开发软硬件配置
  • 国家官方网站儿童做的小游戏下载网站