数据结构和算法——算法 查找算法(二分查找法)实现
来源:互联网 发布:人工智能人才培养 编辑:程序博客网 时间:2024/06/12 08:42
1.算法:解决问题的方法
算法实现在程序里一般表现为一个函数,形参是输入,返回值是输出,函数体是加工过程
当然,cout<<也是输出,也可以输出到文件里
特点:
有输入输出(输入不一定是键盘输入的输入,输出也不定输出在屏幕上,也可是文件)
有穷性
可行性
确定性
关心一个算法最主要的是正确性
其次性能(时间,空间),时间复杂度,空间复杂度
然后是可靠性(健壮性)
算法数量级:N N^2 查找树logN
log2 1024=10
2.二分法查找,折半查找
前提是数组里的元素都排序好冒泡排序的复杂度是N^2
设计算法的方法:
穷举法(暴力法) 每一个都试一试 看哪个最优
贪心策略(局部最优) 当前状态下做好的步骤
深度优先 广度优先
分治法 把一个问题拆成几个小问题
递归法 如果一个问题拆分成跟原来类似的小问题
遗传算法
神经网络
3.二分查找算法实现
二分查找,有序数据,然后采用递归查找;只是用分治法
02binary.cpp
<span style="font-size:18px;">#include <iostream>using namespace std;class Person{string name;int age;string addr;public:Person(const char* n, int a, const char* ad):name(n),age(a),addr(ad){}friend bool operator<(const Person& a, const Person& b){return a.name<b.name;}friend bool operator==(const Person& a, const Person& b){return a.name==b.name;}friend ostream& operator<<(ostream& o, const Person& a){o << a.name << ':' << a.age << ',' << a.addr;return o;}};/*Person* binarysearch(Person* a, int n, const string& name)//递归实现二分{if(n<=0) return NULL;int mid = n/2;Person t(name.c_str(),0,"");if(a[mid]==t) return a+mid;if(t<a[mid]) return binarysearch(a,mid,name);return binarysearch(a+mid+1,n-(mid+1),name);} */Person* binarysearch(Person* a, int n, const string& name){int b=0, e=n-1;Person t(name.c_str(),0,"");while(b<=e){int mid = (b+e)/2;if(a[mid]==t) return a+mid;if(t<a[mid]) e = mid-1;else b = mid+1;}return NULL;} int main(){Person a[5]={Person("李鹏",21,"乌鲁木齐"),Person("钟玉龙",23,"大连"),Person("何军军",20,"重庆"),Person("蒲嗣良",16,"四川绵阳"),Person("王刚",18,"吉林通化")};for(int i=0; i<5; i++)for(int j=i+1; j<5; j++)if(a[j]<a[i])swap(a[j],a[i]);for(int i=0; i<5; i++)cout << a[i] << endl;string name;cout << "请输入姓名:";cin >> name;Person* p = binarysearch(a,5,name);if(p!=NULL) cout << *p << endl;else cout << "找不到" << endl;}</span>
0 0
- 数据结构和算法——算法 查找算法(二分查找法)实现
- 数据结构-二分查找算法
- 数据结构:二分查找算法
- 数据结构与算法(二分查找算法)
- 【数据结构】查找算法:二分查找、顺序查找
- 算法——二分查找算法(Java实现)
- 算法——二分查找算法(Java实现)
- 算法——二分查找算法(Java实现)
- 算法——二分查找算法(Java实现)
- 数据结构与算法——二分查找法(Java实现)
- 二分查找算法实现
- 二分查找算法实现
- python实现查找算法:二分查找法
- 实现折半查找算法(二分查找)
- 数据结构与算法——二分查找算法
- 数据结构与算法——二分查找(C语言)
- 【数据结构与算法】二分查找
- 复习数据结构----二分查找算法
- xor异或逻辑操作(辅助完成图形的叠加)
- 实践:Mysql 5.5.15升级到Mysql5.6.19
- top ten vps
- 推荐一个directui介绍的文章
- C语言几个经典的算法
- 数据结构和算法——算法 查找算法(二分查找法)实现
- C#连接Access数据库
- setContentView( )的简单用法
- 设置屏幕颜色
- [SC-07]qt语言翻译家linguist的使用
- UVA - 10004 Bicoloring
- 关于python文件操作
- 使用动画和fragment改善Android表单
- 点分十进制子网掩码和CIDR的相互转换