百度面试题及我的解答(3)
2009-11-30 22:52
393 查看
主遍历函数的代码,流程如注释所述,这里因为偷懒使用了vector。还没测试,今天没时间了。明天测吧。<这次是用Word2007发布的,代码行间距太大了>
修正了一个BUG. 添加了输出函数。 使用大文本测试,发现这个函数很慢。 具体慢在那还不知道。
后续计划:
1. 性能测试,找出影响性能的点。并给出性能测试数据。
2. 把所有的数据结构都换成标准库。再测一次性能。
3. 结合自定义数据结构和标准库给出最后结果。
4. 代码多线程化。
5. 考虑使用GPU实现多线程。
修正了一个BUG. 添加了输出函数。 使用大文本测试,发现这个函数很慢。 具体慢在那还不知道。
void Step4TrverseProcess(WORD_NODE* plist, ostream& out) { WORD_NODE* pnext = plist; vector<WORD_NODE*> VarWordsList; vector<WORD_NODE*>::iterator i; // list<WORD_NODE*> 使用STL链表保存结果,链表的每一个节点是WORD_NODE链表,这个WORD_NODE链表中保存的都是变位词 // 遍历WORD_NODE List,读取每一个WORD; // 遍历VarWordsList;比较wordNode->SortedStr和VarWordsList的每一个节点,相同则插入到该节点。 // 遍历结束没有找到,则插入到VarWordsList末尾。 do { bool bFoundVarNode = false; for ( i = VarWordsList.begin(); i < VarWordsList.end(); i++ ) { WORD_NODE *pSortedWord = (*i); if ( 0 == strcmp(pSortedWord->sorted_str, pnext->sorted_str) ) { WORD_NODE* ptemp = pnext; pnext = pnext->next; WORD_NODE* ptemp2 = pSortedWord->next; pSortedWord->next = ptemp; ptemp->next =ptemp2; bFoundVarNode = true; break; } } if ( !bFoundVarNode ) { WORD_NODE *ptemp = pnext; pnext = pnext->next; ptemp->next = NULL; VarWordsList.push_back(ptemp); } } while (NULL != pnext); for ( i = VarWordsList.begin(); i < VarWordsList.end(); i++ ) { vector<char*> str_arr; vector<char*>::iterator j; WORD_NODE *pWordList = (*i); out << pWordList->sorted_str << ":/t"; while ( NULL != pWordList ){ bool bSameWord = false; for ( j = str_arr.begin(); j < str_arr.end(); j++) { char* pword = (*j); if ( 0 == strcmp(pword, pWordList->str) ){ bSameWord = true; } } if ( !bSameWord) { out << pWordList->str << "/t"; str_arr.push_back(pWordList->str); } pWordList = pWordList->next; } out << endl; } }
后续计划:
1. 性能测试,找出影响性能的点。并给出性能测试数据。
2. 把所有的数据结构都换成标准库。再测一次性能。
3. 结合自定义数据结构和标准库给出最后结果。
4. 代码多线程化。
5. 考虑使用GPU实现多线程。
相关文章推荐
- 百度面试题及我的解答(5)-1 找出下一步需要优化的内容
- 一道百度的面试题解答
- 百度面试题及我的解答(1)
- 百度面试题及我的解答(5)-2 step5 & step6 代码
- 2014百度研发类笔试题【附详细解答及面试题分享】
- 史上最强大的PHP Web面试题(会做可进百度)----我的解答JS版本
- 百度面试题及我的解答(4)
- 百度面试题及我的解答(4) 补class HashMethod1的代码
- 百度面试题及我的解答(4) 补 buffer模板类代码
- 百度面试题-蚂蚁过木板-完整解答
- [历年IT面试题]百度2014研发类校园招聘笔试题解答
- 百度面试题及我的解答(2)
- 百度面试题及我的解答(5)-0 优化性能
- 百度一道面试题的PHP解答
- 华为Python面试题,排列生成的解法,最优解答
- 算法系列-大数据面试题-在超大文件中找出访问百度次数最多的IP
- 百度面试过程详解-附电话面试题
- 前端面试题--解答
- 百度开发工程师的面试题(导航部门)
- 2012百度实习生面试题一道,打乱100个数的顺序,越乱越好 .