gpt4 book ai didi

C#:Swap 方法的良好/最佳实现

转载 作者:可可西里 更新时间:2023-11-01 08:51:46 38 4
gpt4 key购买 nike

我读了这个post about card shuffling在许多混洗和排序算法中,您需要交换列表或数组中的两个项目。但是,好的且高效的 Swap 方法是什么样的?

假设一个 T[]List<T> .您如何最好地实现一种方法来交换这两项中的两项?

Swap(ref cards[i], ref cards[n]);   // How is Swap implemented?

最佳答案

好吧,您发布的代码 (ref cards[n]) 只能使用数组(而不是列表)- 但您可以简单地使用 (where foo > 和 bar 是两个值):

static void Swap(ref int foo, ref int bar) {
int tmp = foo;
foo = bar;
bar = tmp;
}

或者可能(如果你想要原子的):

Interlocked.Exchange(ref foo, ref bar);

不过,就我个人而言,我不认为我会为交换方法而烦恼——直接进行即可;这意味着您可以使用(对于列表或数组):

int tmp = cards[n];
cards[n] = cards[i];
cards[i] = tmp;

如果您真的想编写一个适用于列表数组的交换方法,您必须执行如下操作:

static void Swap(IList<int> list, int indexA, int indexB)
{
int tmp = list[indexA];
list[indexA] = list[indexB];
list[indexB] = tmp;
}

(使这个通用化是微不足道的) - 然而,在数组上工作的原始“内联”版本(即不是方法)会更快。

关于C#:Swap 方法的良好/最佳实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/552731/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com