하랑이 코딩

컴퓨터공학/알고리즘 5

알고리즘 - 퀵정렬(quick sort) c#

퀵정렬(quick sort) 특정한 값을 기준으로 큰 숫자와 작은 숫자를 나누면 어떨까? 해서 나온 답이 >> 퀵정렬은 피봇을 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 하여 작은 값을 갖는 데이터와 큰 값을 갖는 데이터로 분리해 가며 정렬하는 방법입니다.퀵정렬 과정 피벗 선택: 배열에서 하나의 원소(피벗)를 선택합니다.분할: 피벗보다 작은 원소들은 왼쪽으로, 큰 원소들은 오른쪽으로 이동시키는 방식으로 배열을 재배열합니다.재귀적 정렬: 피벗을 제외한 왼쪽과 오른쪽 부분 배열에 대해 같은 과정을 재귀적으로 반복합니다. 퀵정렬(quick sort) 이론이제 아래 사진과 함께 설명해 보겠습니다.그림에 있는 피봇을 기준으로 보면서 위에 글을 확인하시고 특정한 값을 기..

알고리즘 - 삽입정렬(insertion sort) c#

삽입정렬(insertion sort)각 숫자를 적절한 위치에 삽입하면 어떨까? 해서 나온 답이 >> 삽입 정렬은 앞의 숫자가 나보다 큰지 비교하면서 자신의 위치에 삽입하는 정렬 방법삽입정렬 과정첫 번째 원소는 이미 정렬된 것으로 간주하고, 두 번째 원소부터 시작합니다.현재 정렬된 부분과 비교하면서 적절한 위치에 삽입합니다.배열의 끝까지 이 과정을 반복합니다. 삽입정렬(insertion sort) 이론이제 아래 사진과 함께 설명해보겠습니다.그림에 있는 빨간색을 기준으로 보면서 위에 글을  확인하시고각 숫자를 적절한 위치에 삽입하면 어떨까? 를 기억하시면 이해가 잘 될 겁니다.  삽입정렬(insertion sort) 코드using System;using System.Collections.Generic;cla..

알고리즘 - 버블정렬(bubble sort) c#

버블정렬(bubble sort)옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내면 어떨까? 해서 나온 답이 >> 버블 정렬은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬방식이다. 버블정렬 과정첫 번째 데이터와 두 번째 데이터를 비교하여 첫 번째 값이 더 크면 두 번째 데이터와 교환한다.두 번째 데이터와 세 번째 데이터를 비교하여 더 큰 수를 뒤로 보낸다.이렇게 끝까지 진행하면, 제일 큰 숫자가 맨 뒤로 가게 된다. 이렇게 계속 처음부터 n-1번째 데이터를 비교해서 정렬하는 알고리즘이다. 버블정렬(bubble sort) 이론지금 아래사진 선택 정렬 해보겠습니다.    그림처럼 총 5번 반복하면 1,2,3,4,5로 정렬이 됩니다.바로 위에서 설명한 것처럼 옆에 있는 값과 비교해..

알고리즘 - 선택정렬(selection sort) c#

선택정렬(selection sort)가장 작은 것을 선택해서 제일 앞으로 보내면 어떨까? 해서 나온 답이 >> 선택 정렬은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해 나가는 방식이다. 선택정렬 과정리스트에서 최소값을 찾는다.최소값을 맨 앞의 값과 교체한다. (Swap)교체한 맨 앞의 데이터는 정렬된 것으로 간주하고 다음 인덱스부터 1, 2 행위를 끝까지 반복한다. 선택정렬(selection sort) 이론한번 지금 아래사진 선택 정렬 해보겠습니다. 지금 아래사진처럼 5와 1에 위치를 변경했습니다.이 과정을 계속해보겠습니다.   이렇게 선택정렬이 다 되었습니다. 이제 그림으로 다 봤으니 코드로 보겠습니다  선택정렬(selection sort) 코드using Syste..

알고리즘 - 재귀호출(recursive call) c#

재귀호출(recursive call)이란?재귀호출(recursive call)이란 함수 내부에서 자기 자신을 반복적으로 호출하는 것을 의미한다. 반복 행위를 하는 함수를 재귀호출(recursive call)라고 한다. 일반적인 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 대 매우 유용하다.알고리즘에 따라서 반복문으로 구현한 코드보다 재귀호출(recursive call)로 구현한 코드가 더 직관적이고 이해하기 쉽다.복잡한 문제를 빠르고 쉽게 해결할 수 있다.  꼭 알아야 하는 지식!  재귀호출(recursive call)재귀호출은 반드시 중지되어야 한다.재귀호출로 문제를 해결할 수 있는지 잘 고민해야 한다. 재귀호출(recursive call) 이론아래 사진은 팩토리얼로 예시를 들어 만든 사진입니다.현..