- 论坛徽章:
- 0
|
原帖由 converse 于 2007-8-23 00:07 发表 ![]()
有什么问题吗?请指教.
当然有问题了,问题还不是一般的大。这个问题用vector才有效率,map的存储比它差远了。
我写了一个简单的,希望搂主和这个算法先作一下比较,看看谁的更快,这是标准算法,如果能超过这个那可能标准算法还可以优化一下了。
- #include <vector>
- #include <algorithm>
- #include <sys/time.h>
- int main()
- {
- std::vector<int> datalist;
-
- printf("making data...\n");
- for(unsigned int i=0;i<10000000;i++)
- {
- datalist.push_back(rand());
- }
-
- printf("sorting data...\n");
- static struct timeval begin,end;
- gettimeofday( &begin, NULL );
-
- nth_element(datalist.begin(),datalist.begin()+10000,datalist.end());
-
- gettimeofday( &end, NULL );
- printf("sort end\n");
-
- long us=(end.tv_sec - begin.tv_sec)*1000*1000 + (end.tv_usec - begin.tv_usec);
-
- printf("time=%ld us\n", us);
- return 0;
- }
复制代码 |
|