Run if you want it
300x250

C++ 8

[정렬] 퀵 정렬(Quick Sort)

퀵 정렬 원소을 하나 정하여 이를 pivot(기준 원소)으로 삼고, 해당 pivot보다 작은 수들과 큰 수로 나누는 방식의 정렬. 퀵 정렬을 한번 마치고 나면 pivot을 기준으로 다음과 같이 정렬됨. 왼쪽은 pivot 보다 작은(혹은 작거나 같은) 수 오른쪽은 pivot을 기준으로 큰 수 pivot의 위치는 확정됨(정렬되었음을 의미) 위와 같은 규칙을 가지고 재귀 호출을 통해 구현 구현 #include using namespace std; void my_swap(int *x, int *y) { int tmp; tmp = *y; *y = *x; *x = tmp; } /* 퀵 정렬 */ void quick_sort(int arr[], int start, int end) { if(start >= end) /..

Algorithm/기초 2022.09.14

[정렬] 삽입정렬

삽입정렬 원소를 적절한 위치에 삽입하는 방법으로서, 이미 정렬이 되어있는 앞의 원소와 비교해 나아가면서 필요할 때만 위치를 변경 #include using namespace std; void my_swap(int *x, int *y) { int tmp; tmp = *y; *y = *x; *x = tmp; } /*삽입 정렬 */ void insertion_sort(int arr[], int cnt) { int j; for(int i=0; i=0 && arr[j] > arr[j+1]) { my_swap(&arr[j], &arr[j+1]); j--; } } } int ary[10] = { 1, 10 ,5, 3, 8, 7, 6, 4, 2, 9}; int main() { insertion_sort(ary,10);..

Algorithm/기초 2022.09.13

[정렬] 정렬 개요 및 선택 정렬

정렬: 어떤 원소들의 집합을 특정 기준을 적용하여 나열함 알고리즘에서 "정렬"은 알고리즘의 성능을 극명히 보여주는 알고리즘. 선택정렬 선택정렬은 정렬 중 가장 기본적인 정렬 방식으로, 원소 중 가장 작은 값을 찾아 앞으로 보내는 방식. 구현코드 #include using namespace std; void my_swap(int *x, int *y) { int tmp; tmp = *y; *y = *x; *x = tmp; } /* 선택 정렬 */ void selection_sort(int arr[], int cnt) { int min; for(int i=0; i

Algorithm/기초 2022.09.13

Stack & Queue

Stack 후입 선출(LIFO)의 stack을 구현한 STL #include #include using namespace std; int main(){ stack st; //int자료형을 저장하는 스택 생성 st.push(4); //원소(4) 삽입 st.pop(); // 마지막 삽입된 원소 pop printf("%d\n", st.top()); // 마지막 삽입된 원소 값 출력 printf("%d\n", st.empty()); //스택이 비어있다면 1 아니면 0 printf("%d\n", st.size()); //스택에 저장되어 있는 원소의 수 출력 return 0; } Queue #include #include using namespace std; int main(){ queue q; //int자료형을 ..

Algorithm/STL 2022.09.01

Vector, pair

Vector 동적 배열을 구현한 STL #include #include using namespace std; int main(){ vector vec1; //int 자료형을 저장하는 동적배열 vector vec2; //double 자료형을 저장하는 동적배열 vector vec3; //사용자가 정의한 Node 구조체를 저장하는 동적배열 vector vec4(n); //벡터의 초기 크기를 n으로 설정 vector vec5(n, 1); //벡터의 초기 크기를 n으로 설정하고 1로 초기화 vector vec6(n, vector(m, 0)); //크기가 n*m인 2차원 벡터를 선언하고 0으로 초기화 // 또는 하기와 같이 2차원 벡터 초기화 /* for(int i=0; i

Algorithm/STL 2022.09.01

C++ 기본 팁 & 입출력

C++ 기본 #include using namespace std; 헤더로 #include 을 선언하게 되면 stl header 하나하나 include할 필요 없이 한번에 include. namespace를 사용함으로서 std 생략 가능 입력 모든 알고리즘 문제들은 test case의 입력을 받아 문제를 해결해 나아가야 한다. C / C++에는 여러가지 입력 함수가 있는데 대표적으로 scanf, cin이 있다. scanf(): white space(띄어쓰기, 줄바꿈 등의 공백) 이전까지 설정한 format에 맞춰 입력 받음 cin: 개행문자(\n) 이전까지 입력 받음 대개 형태가 정해져있는 input 값을 입력 받는 방식에 대한 case별 정리 case1 하기와 같은 n x m 행렬 형태의 데이터를 입력 ..

Algorithm/기초 2022.08.31

[C++] 가상함수(Virtual function)와 다형성

이 페이지는 상속(Inheritance)에 대하여 어느 정도 사전지식이 있다고 생각하고 서술하였습니다. C++의 객채지향프로그래밍의 가장 중 큰 특징 중 하나인 가상함수와 다형성에 대하여 알아볼 것이다. 가상함수(Virtual Function)이란 자식클래스에서 이미 정의되어 있는 부모클래스의 멤버함수를 오버라이딩(재정의)한 멤버함수를 의미한다. 먼저 코드를 통해 가상함수의 기본적인 개념인 '오버라이딩'에 대해 알아보자 #include #include using namespace std; class Parent { public: void WhoIam() { cout

C_C++ 2020.05.31
728x90