- 论坛徽章:
- 2
|
yulihua49 发表于 2012-08-04 22:51
习惯问题,一般把有序数组叫二分法,二叉链表叫二叉树,以示方法上的区别,习惯了你的称谓方法,理解上也没问题。
系统的Binary_search(怎么拼写的一时忘了)也是指的对数组的查找。
怎么我知道的二分就不局限于数组或是树呢?
因为有序,所以可以根据对一个元素的判断推断出并省略对其他元素的判断。
至于有序序列是数组形式,还是树形式,还是什么其他形式,与二分根本就无关。
STL对链表都可以二分查找,并且一定保证只有对数次比较。 只是因为链表的特殊性,就不能保证对数次的元素访问而已。
yulihua49 发表于 2012-08-04 22:51
试了各种方法,就是二叉树快,所以就向人推荐,也没有错啊。这也不涉及我会什么,不会什么,即使我什么都不会,各种工具系统里都有,拿来用就是。
你从文件里读出一堆数据,把他们摆好了(摆也是个难事,不知道要多大空间),再排序;还是边读边往树里插(节点自动分配),读完了,序也排好了,哪个快?
- vector<int> v(istream_iterator<int>(cin), (istream_iterator<int>()));
- v.sort();
- copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
复制代码
- multiset<int> s(istream_iterator<int>(cin), (istream_iterator<int>()));
- copy(s.begin(), s.end(), ostream_iterator<int>(cout, " "));
复制代码 我还真不信后者会比前者快。 |
|