[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 11# 523066680
是否可以用快速排序

TOP

本帖最后由 happy886rr 于 2016-11-14 00:49 编辑

故题重游,C语言版:
Submission Details
221 / 221 test cases passed.
Status: Accepted
Runtime: 0 ms
  1. char outStr[];
  2. int CompNums(const void* a, const void* b){
  3. char* str1=*(char**)a;
  4. char* str2=*(char**)b;
  5. int i, L1=strlen(str1), L2=strlen(str2);
  6. for(i=0; i<10; i++){
  7. if(*str1=='\0'){str1-=L1;}
  8. if(*str2=='\0'){str2-=L2;}
  9. if(*str1 != *str2){break;}
  10. str1++, str2++;
  11. }
  12. return *str2-*str1;
  13. }
  14. char* largestNumber(int* nums, int numsSize) {
  15. int i;
  16. outStr[0]=0;
  17. char* p[numsSize];
  18. for(i=0; i<numsSize; i++){p[i]=(char*)malloc(sizeof(char)*16);sprintf(p[i], "%d\0", nums[i]);}
  19. qsort(p, numsSize, sizeof(char*), CompNums);
  20. for(i=0; i<numsSize; i++){strcat(outStr, p[i]);}
  21. return outStr[0]=='0'?"0":outStr;
  22. }
复制代码
>>>
补充,针对本帖所有回帖的C代码,在100万次的测试当中,只有21楼aa77dd@163.com兄的代码速度最快,100万次耗时0.7秒,本人用itoa函数也只能做到100万次耗时1.1秒。其他C语言方案均耗时数秒,并且存在严重漏洞。
>>>
另外小于5000次的测试根本无法体现性能,几乎都是0毫秒。只在百万次的测试上个别方案才会出现极大的漏洞。
2

评分人数

TOP

返回列表