C++顺序表经典算法
发布日期:2021-07-27 05:01:33
浏览次数:5
分类:技术文章
本文共 2012 字,大约阅读时间需要 6 分钟。
算法
假设顺序表中的元素递增有序,设计算法在顺序表中插入元素x,要求插入后仍然保持递增有序
void list::insert1(int x) { int i = count - 1; if (i >= 9) cout << "The camber is overflow" << endl; while (x < data[i] && i>0) { data[i + 1] = data[i]; i--; } data[i + 1] = x; cout << "The value is successful to put in" << endl;}
分析:在第i个位置1插入时需要移动n-i+1个元素,最好的情况下比较1次,移动0次
假设顺序表A、B分别表示一个集合,涉及算法以判断集合A是否是集合B的子集,若是,返回True,否则返回False,并分析算法性能
bool subset(list A, list B) { int ia, ib; int a, b; for (ia = 0; ia < A.length(); ia++) { A.get_elementtype(ia, a); ib = 0; bool suc = false; while (ib < B.length() && suc == false) { B.get_elementtype(ib, b); if (a == b) suc == true; else ib++; } if (suc == false) return false; } return true; }
分析算法性O(A*B)
假设顺序表递增的顺序表A、B分别表示一个集合,涉及算法以判断集合A是否是集合B的子集,若是,返回True,否则返回False,并分析算法性能
bool subset1(list A, list B) { int ia = 0, ib = 0; int a, b; while (ia < A.length() && ib < B.length()) { A.get_elementtype(ia, a); B.get_elementtype(ib, b); if (a == b) { ia++; ib++; } else if (a > b)ib++; else return false; } if (ia >= A.length()) return true; else return false;}
分析:ia 和ib分别表示指向A和B的两个指针,有三种情况
1.data[ia]==data[ib]——>ia++;ib++ 2.data[ia] >data[ib]——>ib++; 3.data[ia] <data[ib]——>return Fasle 算法性能:O(A+B)
涉及算法将递增的有序顺序表A、B中的元素值合并为一个递增有序顺序表C,要求时间尽可能的少
void merg_list(list A, list B, list& C) { int ia = 0, ib = 0, ic = 1; int a, b; while (ia < A.length() && ib < B.length()) { A.get_elementtype(ia, a); B.get_elementtype(ib, b); if (a == b) { C.insert(ic, a); ic++; C.insert(ic, a); } else if (a > b) { C.insert(ic, b); ic++; ia++; } else { C.insert(ic, a); ic++; ib++; } } while (ia < A.length()) { A.get_elementtype(ia, a); C.insert(ic, a); ic++; ia++; } while (ib < B.length()) { B.get_elementtype(ib, b); C.insert(ib, b); ic++; ib++; }}
分析:尽可能的少,就代表O(A+B)
就会用两个不同的指针ia,ib分别指向A和B,有三种不同的情况 1.data[ia]==data[ib]——>C.insert(ic,a);ic++;C.insert(ic,a); 2.data[ia] >data[ib]——>C.insert(ic,b);ic++; 3.data[ia] <data[ib]——>C.insert(ic,a);ic++;
转载地址:https://blog.csdn.net/qq_45400755/article/details/107293267 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年09月30日 07时09分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
中低频量化交易策略研发01_引言
2019-05-27
中低频量化交易策略研发06_推进的择时策略
2019-05-27
史丹·温斯坦称傲牛熊市的秘密
2019-05-27
期货市场技术分析01_理论基础
2019-05-27
期货市场技术分析02_趋势的基本概念
2019-05-27
期货市场技术分析03_主要反转形态
2019-05-27
期货市场技术分析04_持续形态
2019-05-27
期货市场技术分析05_交易量和持仓兴趣
2019-05-27
TB交易开拓者入门教程
2019-05-27
TB创建公式应用dll失败 请检查用户权限,终极解决方案
2019-05-27
talib均线大全
2019-05-27
期货市场技术分析06_长期图表和商品指数
2019-05-27
期货市场技术分析07_摆动指数和相反意见理论
2019-05-27
满屏的指标?删了吧,手把手教你裸 K 交易!
2019-05-27
不吹不黑 | 聊聊为什么要用99%精度的数据回测
2019-05-27
X 分钟速成 Python
2019-05-27
对于模拟交易所引发的思考
2019-05-27
高频交易的几种策略
2019-05-27
量化策略回测TRIXKDJ
2019-05-27