提前回校上课笔记

基本数据结构:
数据结构:1.线性; 2.非线性。
程序设计=算法+数据结构!!!
数组:
数组的特性:
 占用连续的内存空间  a[3]和a[4] 
定位 取第i个元素  O(1)
查找某个元素 是否有 ?   O(n)  for 循环    或  二分   O(log2(n))

插入一个元素    如果要在第i个元素后插入  从右往左从第n个到第i+1个元素依次往右移动  O(n)

 

删除一个元素  第i个元素     从第i+1个元素到第n个元素依次往左移动








链表:
什么时候用链表???
当要在一串数组中插入或删除时,会十分麻烦,就可以用链表来代替数组,使空间复杂度变成o(1)。
("_")
不连续的内存空间   next   prev
和数组对应 链表的插入和删除操作都是 O(1)
数组的特性:
 占用连续的内存空间  a[3]和a[4] 
定位 取第i个元素  O(1)
查找某个元素 是否有 ?   O(n)  for 循环    或  二分   O(log2(n))


插入一个元素    如果要在第i个元素后插入  从右往左 从第n个到第i+1个元素依次往右移动  O(n)


删除一个元素  第i个元素     从第i+1个元素到第n个元素依次往左移动



假设a元素的下标是p  ,    
 
插入


 


元素d的下标 是p


a[s].next=a[p].next;  a[p].next=s;




栈(stack):

后进先出

括号匹配 :  左括号 进栈  ,右括号 和栈顶 匹配

 

加强版:  开一个bool数组 F,用括号匹配的方式来让F[i] 是否匹配  

       在F数组里 找到 最长的连续为真的子序列长度

 

 

For (int i=1;i<=n;i++)

  For(int j=I;j<=n;j++)

{

   Sum=0;

   For(int k=I;k<=j;k++)  sum+=a[k];

   If(sum>maxx)  maxx=sum;

}

 

Int sum[N];

 

For (int i=1;i<=n;i++)

 {

   Cin>>a[i];  sum[i]=sum[i-1]+a[i];

}

 

For (int i=1;i<=n;i++)

  For(int j=I;j<=n;j++)

{

  

   If(sum[j]-sum[i-1]>maxx)  maxx=sum;

}

Sum=0;

For (int i=1;i<=n;i++)

{

   Sum=sum+a[i];

   If(sum>maxx)  maxx=sum;

   If(sum<0)  sum=0;

}

 

 

队列:  队头 head队尾 tail

Int q[N]  head=0;tail=0;

 q[++tail]=V

int temp=q[head++];

 

while (head<=tail)

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值