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

后端 未结 6 508
情话喂你
情话喂你 2021-01-17 06:45

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

相关标签:
6条回答
  • 2021-01-17 07:17

    use a tuple

    int[] arr = { 1, 2, 3 };
    (arr[0], arr[1]) = (arr[1], arr[0]);
    Console.WriteLine(string.Format($"{arr[0]} {arr[1]} {arr[2]}")); // 2 1 3
    
    0 讨论(0)
  • 2021-01-17 07:19

    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;
    
    0 讨论(0)
  • 2021-01-17 07:19

    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; 
        }
    }
    
    0 讨论(0)
  • 2021-01-17 07:26

    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;
    }
    
    0 讨论(0)
  • 2021-01-17 07:27

    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;
    }
    
    0 讨论(0)
  • 2021-01-17 07:41
    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

    0 讨论(0)
提交回复
热议问题