본문 바로가기

카테고리 없음

Array.Copy 와 CopyTo 메소드의 사용법 비교 /버블정렬

반응형
using System;
using System.Collections.Generic;
using System.Diagnostics.SymbolStore;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp10
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = { 5, 25, 75, 35, 15 };
            PrintArray(a);

            int[] b;
            b =(int[]) a.Clone();
            b = (int[]) a.Clone();
            //Clone()메소드는 Object를 리턴하므로 (itn[]) 로 다시 케스팅 해줘야한다
            int[] c = new int[10];
            Array.Copy(a, 0, c, 0,3 );
            PrintArray(c);
           
            a.CopyTo(c,0);
            PrintArray(c);

Array.Copy (a,0,c,0,3) 의경우 a배열이 0번 인덱스부터 3개의 요소를 c배열의 0번 부터 카피하겠다는 코딩!

a.CopyTo(c,0)의 경우 c배열에 a배열을 0의 위치 부터 넣겠다 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp12
{
    class Program
    {
        static void Main(string[] args)
        {
            Random random = new Random();
            int[] v = new int[20];

            for (int i = 0; i < v.Length; i++)
            {
                v[i] = random.Next(100);
            }
            PrintArracy(v);

            int max = v[0];
            for (int i = 0; i < v.Length; i++)
            {
                if (v[i]>max)
                {
                    max = v[i];
                }
            }
            Console.WriteLine("Max :"+max);
           
            int min = v[0];
            for (int i = 0; i < v.Length; i++)
            {
                if (v[i] < min)
                {
                    min = v[i];
                }
            }
            Console.WriteLine("Min :" + min);

            int sum = 0;
            for (int i = 0; i < v.Length; i++)
            {
                sum = sum + v[i];
            }
            Console.WriteLine($"합계:{sum} ,평균 : {sum/v.Length}");

        }
        private static void PrintArracy(int[]v)
        {
            for (int i = 0; i < v.Length; i++)
            {
                Console.Write("{0,5}{1}",v[i],(i%10==9) ? "\n":"" );
            }
        }
    }
}

 

렌덤 클래스로 변수 선언하고 렌덤값으로 최대값고 최소 값을 구하는 방법 

최대값은 역시나 for문으로 배열 값을 돌리면서 if 문으로 초기값과 비교하여 최종적으로 제일 큰 수가 나오게 출력한다.

최소 값도 반대로 작은 값을 추출하게 해주면 된다. 

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp13
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] v = { 3, 5, 2, 7, 1 };
            PrintArray(v);

            for (int i = 4; i >0; i--)
            {
                for (int j = 0; j < i; j++)
                {
                    if (v[j]>v[j+1])
                    {
                        int t = v[j];
                        v[j] = v[j + 1];
                        v[j + 1] = t;
                    }
                    PrintArray(v);
                }
            }
        }

        private static void PrintArray(int[] v)
        {
            foreach (var item in v)
            {
                Console.Write($"{item, 5}");
            }
            Console.WriteLine();
        }
    }
}

버블정렬: 배열의 앞과 뒤를 비교하여 큰숫자가 위로 올라가서 내림차순이 되도록하는  방식이다 .

배열 값이 5개가 있다고 하면 비교는 총 4번이 발생한다. 그래서 for문에서 횟수는 4번으로 제한 한다. 

 

 

반응형