首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

请问在面试中遇到的一个算法

2012-09-07 
请教在面试中遇到的一个算法。比如有const char * szName[]{张三,李四,王麻子};int nRand[]{3,1,2}

请教在面试中遇到的一个算法。
比如有
const char * szName[]={"张三","李四","王麻子"};
int nRand[]={3,1,2},
要求szName按在nRand中对应的名次输出类似: 
1 李四
2 王麻子 
3 张三 
要求时间复杂度 <O(n^2),纯C实现。 我自己的实现达不到这样一个时间复杂度。求各位指教。

还有麻烦各位推荐有关这方面问题的书籍。谢谢了

[解决办法]
{"张三","李四","王麻子"};
{3,1,2},
===>
index = 0; value = 3; temp = "张三"
[] ["李四"] ["张三"]
index = 2; value = 2; temp = "王麻子"
[] ["王麻子"] ["张三"]
index = 1; value = 1; temp = "李四"
["李四"] ["王麻子"] ["张三"]


[解决办法]
开辟一个大小为N的数组可达到时间复杂度O(n)

C/C++ code
#include <iostream>using namespace std;int main(){    const char * szName[]={"张三","李四","王麻子"};    int nRand[]={3,1,2};    int print[3];    int i;    for(i=0;i<3;i++)        print[nRand[i]-1]=i;    for(i=0;i<3;i++)        cout<<szName[print[i]]<<endl;    return 0;} 

热点排行