728x90
728x90
삽입정렬(Insertion sort)이란? 삽입정렬(Insertion sort)은 앞의 숫자가 나보다 큰지 비교하면서 자신의 위치에 삽입하는 정렬 방법이다. 앞의 값과 비교를 하기 때문에 전체 배열 중 0번 인덱스가 아닌 1번 인덱스부터 앞의 값과 비교한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Insertion_sort { class Program { static void Main(string[] args) { Console.WriteLine("삽입정렬"); int[] nArrData = { 20, 15, 1, 5, ..
퀵정렬(Quick sort)이란? 퀵정렬은 피봇을 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 하여 작은 값을 갖는 데이터와 큰 값을 갖는 데이터로 분리해가며 정렬하는 방법이다. 1. 분할 정복 알고리즘 2. 일반적으로 빠른 알고리즘 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace quicksort { class Program { static int[] data = { 25, 15, 60, 45, 10, 20, 5, 30 }; static void Main(string[] args) { C..
버블정렬(Bubble sort)이란? 버블 정렬은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬방식이다. 1. 첫번째 데이터와 두번째 데이터를 비교하여 첫번째 값이 더 크면 두번째 데이터와 교환한다. 2. 두번째 데이터와 세번째 데이터를 비교하여 더 큰 수를 뒤로 보낸다. 3. 이렇게 끝까지 진행하면, 제일 큰 숫자가 맨 뒤로 가게 된다. 이렇게 계속 처음부터 n-1번째 데이터를 비교해서 정렬하 는 알고리즘이다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BubbleSort { class Progr..
선택정렬(Selection sort)이란? 선택정렬은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해 나가는 방식이다. 1. 리스트에서 최소값을 찾는다. 2. 최소값을 맨 앞의 값과 교체한다. (Swap) 3. 교체한 맨 앞의 데이터는 정렬된 것으로 간주하고 다음 인덱스부터 1, 2 행위를 끝까지 반복한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SelectionSort { class Program { static void Main(string[] args) { Console.WriteL..
재귀호출(recursive call)이란? 재귀호출(recursive call)이란 함수 내부에서 자기 자신을 반복적으로 호출하는 것을 의미한다. 반복 행위를 하는 함수를 재귀함수(recursive function)라고 한다. 일반적인 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 때 매우 유용하다. 알고리즘에 따라서 반복문으로 구현한 코드보다 재귀호출로 구현한 코드가 더 직관적이고 이해하기 쉽다. 복잡한 문제를 빠르고 쉽게 해결할 수 있다. - 팩토리얼(Factorial) 정규식 f(n) = n * (n-1) //단, f(1) = 1 //5! = 5 x 4 x 3 x 2 x 1 = 120 public int FuncFactorial(int nNumber) { int nResult = 0; if(nNu..
해쉬테이블(Hashtable) - Key 값을 Hash 함수에 넣어 코드값으로 변경한 후 Bucket이라는 저장 공간에 인덱스 번호를 매핑하여 데이터를 저장 하는 것 - Hash Collision 발생 시(값끼리 충돌) Seperate chaining(Liked List로 노드 연결)으로 해결, Open addressing(빈 버킷 사 용) .Net의 HashTable과 Dictionary의 특징 - 키를 가지고 빠르게 값에 접근하기에 좋다 - 순서나 중복되는 데이터가 있는 경우에는 맞지 않다 - 미리 저장공간을 확보하기 때문에 메모리 효율이 좋지 않다 - 일반적으로 Dictionary를 더 많이 사용한다.(제네릭) using System; using System.Collections; using Sys..