How can I swap two values of an array in c#?

2020-02-07 13:05发布

I have an array of int containing some values starting from index 0. I want to swap two values for example value of index 0 should be swapped with the value of index 1. How can I do this in the c# array?

5条回答
我想做一个坏孩纸
2楼-- · 2020-02-07 13:34

If you really only want to swap, you can use this method:

public static bool swap(int x, int y, ref int[] array){

        // check for out of range
        if(array.Length <= y || array.Length <= x) return false;


        // swap index x and y
        var buffer = array[x];
        array[x] = array[y];
        array[y] = buffer;  


        return true;
}

x and y are the indizies, that should be swapped.

If you want to swap with any type of array, then you can do it like this:

public static bool swap<T>(this T[] objectArray, int x, int y){

        // check for out of range
        if(objectArray.Length <= y || objectArray.Length <= x) return false;


        // swap index x and y
        T buffer = objectArray[x];
        objectArray[x] = objectArray[y];
        objectArray[y] = buffer;


        return true;
}

And you can call it like:

string[] myArray = {"1", "2", "3", "4", "5", "6"};

if(!swap<string>(myArray, 0, 1)) {
    Console.WriteLine("x or y are out of range!");
    return;
}
查看更多
闹够了就滚
3楼-- · 2020-02-07 13:34

I just wrote something similar, so here is a version that

  • uses generics so that it works on ints, strings etc,
  • uses extension methods
  • comes with a test class

Enjoy :)

[TestClass]
public class MiscTests
{
    [TestMethod]
    public void TestSwap()
    {
        int[] sa = {3, 2};
        sa.Swap(0, 1);
        Assert.AreEqual(sa[0], 2);
        Assert.AreEqual(sa[1], 3);
    }
}

public static class SwapExtension
{
    public static void Swap<T>(this T[] a, int i1, int i2)
    {
        T t = a[i1]; 
        a[i1] = a[i2]; 
        a[i2] = t; 
    }
}
查看更多
姐就是有狂的资本
4楼-- · 2020-02-07 13:39

You could create an extension method that would work for any array

public static void SwapValues<T>(this T[] source, long index1, long index2)
{
    T temp = source[index1];
    source[index1] = source[index2];
    source[index2] = temp;
}
查看更多
▲ chillily
5楼-- · 2020-02-07 13:43
static void SwapInts(int[] array, int position1, int position2)
{      
    int temp = array[position1]; // Copy the first position's element
    array[position1] = array[position2]; // Assign to the second element
    array[position2] = temp; // Assign to the first element
}

call this function and print elemet

查看更多
女痞
6楼-- · 2020-02-07 13:51

swap only two values only once or want to do the same for the entire array.

Assuming that you only want to swap only two only once and is of type integer, then you can try this:

    int temp=0;
    temp=arr[0];
    arr[0]=arr[1];
    arr[1]=temp;
查看更多
登录 后发表回答