1. 사용 Array.Reverse() 방법

에게 제자리에서 지정된 어레이 내에서 요소의 순서를 반대로 하면 다음을 사용할 수 있습니다. Array.Reverse() 방법. 솔루션은 보조 어레이을 사용하지 않고 지정된 어레이의 기존 요소를 덮어쓰는 방식으로 작동합니다.

다음 예에서는 어레이의 값을 반대로 하는 방법을 보여줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
public class Example
{
    public static void Main()
    {
        int[] array = { 2, 4, 6, 8 };
        Array.Reverse(array);
 
        Console.WriteLine(String.Join(',', array));
    }
}
 
/*
    결과: 8,6,4,2
*/

 

2. 사용 Enumerable.Reverse() 방법

원래 어레이의 역 복사본을 생성하려면 다음을 사용할 수 있습니다. Enumerable.Reverse() 방법. 기본 어레이을 수정하지 않고 역순으로 요소가 있는 새 시퀀스를 생성합니다. 다음 코드 예제에서는 다음을 사용하여 어레이을 반전합니다. Reverse() 방법.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Linq;
 
public class Example
{
    public static void Main()
    {
        int[] array = { 2, 4, 6, 8 };
 
        int[] reverse = Enumerable.Reverse(array).ToArray();
        Console.WriteLine(String.Join(',', reverse));
    }
}
 
/*
    결과: 8,6,4,2
*/

3. 커스텀 루틴

또 다른 솔루션은 입력 어레이과 동일한 유형 및 크기의 새 어레이을 만들고 소스 어레이의 요소를 역순으로 채운 다음 새 어레이의 내용을 소스 어레이에 복사하는 것입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
 
public static class Extensions
{
    public static void reverse<T>(this T[] array)
    {
        int n = array.Length;
        T[] aux = new T[n];
 
        for (int i = 0; i < n; i++) {
            aux[n - 1 - i] = array[i];
        }
 
        for (int i = 0; i < n; i++) {
            array[i] = aux[i];
        }
    }
}
 
public class Example
{
    public static void Main()
    {
        int[] array = { 2, 4, 6, 8 };
 
        array.reverse();
        Console.WriteLine(String.Join(',', array));
    }
}
 
/*
    결과: 8,6,4,2
*/

 

 
위의 구현에는 다음이 필요합니다. O(n) 보조 어레이를 위한 추가 공간. 아래와 같이 어레이을 제자리에서 수정하여 이를 방지할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
 
public class Example
{
    private static void swap(int[] array, int i, int j)
    {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
 
    public static void Main()
    {
        int[] array = { 2, 4, 6, 8 };
 
        int n = array.Length;
        for (int i = 0; i < n/2; i++) {
            swap(array, i, n-i-1);
        }
 
        Console.WriteLine(String.Join(',', array));
    }
}
 
/*
    결과: 8,6,4,2
*/

'c# 기초 문법' 카테고리의 다른 글

c# 메서드(1)  (0) 2024.08.07
c# 배열의 선언과 초기화방법  (0) 2024.08.07
c# 배열 - array, list  (0) 2024.08.07
c# 반복문  (0) 2024.08.06
c# 조건문  (0) 2024.08.06

+ Recent posts