首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Array.Reverse算法?

Array.Reverse算法?
EN

Stack Overflow用户
提问于 2010-05-29 00:48:15
回答 5查看 2.3K关注 0票数 1

Array.Reverse(string a),在后台使用哪种算法来反转字符串?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-29 00:51:47

可能是一种标准的就地反转算法。

函数对i从0到楼层(n/2)的反转就地(a0..n)交换(ai,an-i)

资料来源

  • Wikipedia/In-place algorithm
票数 9
EN

Stack Overflow用户

发布于 2010-05-29 00:51:55

该算法可能使用了两个指针i和j,它们分别从0和长度-1开始。然后交换位置i和j处的字符(在时间变量的帮助下),i递增,j递减1。重复这些步骤,直到两个指针达到彼此(i≥j)。

在伪代码中:

代码语言:javascript
复制
i := 0;
j := a.length-1;
while (i < j) do
    tmp := a[i];
    a[i] := a[j];
    a[j] := tmp;
    i := i+1;
    j := j-1;
endwhile;
票数 3
EN

Stack Overflow用户

发布于 2010-05-29 01:11:49

根据Reflector的说法,Array.Reverse(Array) (没有字符串变体)首先调用名为TrySZReverse的东西,我找不到它的实现。我假设它是某种经过高度优化的本机方法。

如果失败,它会这样做:

代码语言:javascript
复制
int num = index;
int num2 = (index + length) - 1;
while (num < num2)
{
    object obj2 = objArray[num];
    objArray[num] = objArray[num2];
    objArray[num2] = obj2;
    num++;
    num2--;
}

因此,这是一个就地算法,它交换两端的值,然后反复向内移动。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2930886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档