2
回答
字符串数组按字母排序
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

用C#对一个字符串数组按字母排序,其实就是想实现文件夹里的文件按小到大排功能。不想用string.sort()。也就是想自己把sort()的代码写出来。想了半天没想出来。在这求解。谢谢

string[] fileNames={"adkf","ladk","loweiaaa","weigh","bbb"};

假设现在要对这个字符串数组排序。

<无标签>
举报
海子IT
发帖于5年前 2回/2K+阅
共有2个答案 最后回答: 5年前
C#有c语言的strcmp之类的功能吗?没有就自己实现一个。之后再实现一个快速排序。。。
--- 共有 2 条评论 ---
优游幻世回复 @海子IT : 网上搜搜就有了,我都忘了。。。 5年前 回复
海子ITC#有string.compare(),是我写不出快速排序的代码,求代码 5年前 回复
稍作修改吧 int QuickSort (const PDATA pdtArr ,const COUNT ctArr) { DATA dtTemp ; PDATA pdtFirst ,pdtLast ,pdtLeft ,pdtRight ; PPDATA ppdtPeek ; if (pdtArr == NULL OR ctArr < SORT_CTARR_MIN OR ctArr > SORT_CTARR_MAX) //Check Inlegal Parameters return ERROR ; ppdtPeek = (PPDATA) malloc (ctArr & 0X00000001 ? ctArr + 8 : ctArr + 4) ; *ppdtPeek = NULL ; pdtLeft = pdtArr ; pdtRight = pdtArr + ctArr - 1 ; do { pdtFirst = pdtLeft ; pdtLast = pdtRight ; while (TRUE) { #ifdef SORT_ZORDER_DOWN while (*pdtLeft > *pdtRight AND pdtLeft < pdtRight) #else while (*pdtLeft < *pdtRight AND pdtLeft < pdtRight) #endif pdtLeft++ ; if (pdtLeft >= pdtRight) break ; if (*pdtLeft != *pdtRight) { dtTemp = *pdtLeft ; *pdtLeft = *pdtRight ; *pdtRight = dtTemp ; } pdtRight-- ; #ifdef SORT_ZORDER_DOWN while (*pdtLeft > *pdtRight AND pdtLeft < pdtRight) #else while (*pdtLeft < *pdtRight AND pdtLeft < pdtRight) #endif pdtRight-- ; if (pdtLeft >= pdtRight) break ; if (*pdtLeft != *pdtRight) { dtTemp = *pdtLeft ; *pdtLeft = *pdtRight ; *pdtRight = dtTemp ; } pdtLeft++ ; } if (pdtLeft > pdtFirst AND pdtRight < pdtLast) { pdtLeft = pdtFirst ; pdtRight-- ; *++ppdtPeek = pdtLast ; } else do { pdtLeft = pdtLast + 2 ; pdtRight = *ppdtPeek-- ; } while (pdtLeft == pdtRight) ; } while (pdtRight != NULL) ; return 0 ; 快速排序非递归概念源码 }
--- 共有 4 条评论 ---
870177103我提交了才发现++没写 改成while(*pstra++ == *pstrb++)也行 5年前 回复
870177103int CompareString (PSTR pstStrA ,PSTR pstStrB){ if (pstStrA==NULL OR pstStrB == NULL) return ERROR; while (*pstStrA == *pstStrB AND *pstStrA != EOS) ; return (int) (*pstStrA - *pstStrB);} @海子IT 5年前 回复
870177103好吧,鉴于你的情况,我说几点 1:让你的开发工具对齐代码 2:要不要我给你实现一个strcmp 3:if(a>b)改成if(strcmp(a,b)>0) 4;把指针改成下标 5:好好学习吧 5年前 回复
海子IT哥靠谱点行么。C#哪来指针。而且您这是整型,我要的是字符串,或者你会发话说把int 改成string,可是字符串的比较好像要麻烦,它关系到长度,字码大小。再来点别的提示好吗。您那代码我实行看不懂 5年前 回复
顶部