【问题标题】:How to swap 2 values in a List in C#? [duplicate]如何在 C# 的列表中交换 2 个值? [复制]
【发布时间】:2021-02-09 19:40:10
【问题描述】:

所以我是 C# 的新手,正在尝试制作冒泡排序算法,想知道有没有办法以最简单的方式交换列表中的 2 个值?

static void BubbleSort(List<int> list)
        {
            for (int i = 0; i == list.Count-1; i++)
            {
                for (int j = 0; i == list.Count - i; j++)
                {
                    if (list[j] > list[j+1])
                    {
                      //Need a way to swap values in position j and j+1
                    }
                }
            }

【问题讨论】:

  • 你可以使用Interlocked.Exchange,或者只是创建一个临时变量。
  • @Andy 从未听说过 interlocked.exchange 我搜索了它,但找不到列出的,你能告诉我怎么做吗?
  • 别听他的,联锁交流又贵又懒。
  • @Blindy -- 伙计,你真是个有趣的人,哈哈

标签: c# .net algorithm sorting


【解决方案1】:

保持简单,使用一个临时变量来暂时存储两个值之一:

if (list[j] > list[j+1])
{
    int temp = list[j];
    list[j] = list[j+1];
    list[j+1] = temp;
}

【讨论】:

  • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
【解决方案2】:
if (list[j] > list[j + 1])
    (list[j], list[j + 1]) = (list[j + 1], list[j]);

【讨论】:

  • 我不想成为“那个人”,但你能解释一下这是做什么的吗?
  • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
  • @Blindy 嘿,我试过你的错误,现在它显示了一个超出索引的错误
  • @Blindy ``` List list = new List { 3, 1, 7, 5, 2 };冒泡排序(列表); } static void BubbleSort(List list) { for (int i = 0; i list[j+1]) { // 只能交换值,否则会导致问题 int temp = list[j];列表[j] = 列表[j + 1];列表[j + 1] = 温度; } } } Console.WriteLine(String.Join(", ", list)); }
  • @StriplingWarrior 我没有足够的字符进入解构器。这是元组!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2017-04-15
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多