목록Data Struct (4)
프로그래밍 공부
선택 정렬은 가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘이다. 예를들어 배열안의 원소가 { 3, 2, 5, 4, 1 }일 때 원소가 교환이 일어난 것만 표현할 경우 { 1, 2, 5, 4, 3 } -> { 1, 2, 3, 4, 5 }순으로 정렬이 완료된다. 알고리즘 1. 아직 정렬하지 않은 부분에서 가장 작은 값의 인덱스를 선택한다. 2. 가장 작은값의 인덱스의 요소와 정렬하지 않은 부분의 첫 번째 요소를 교환한다. 이걸 n - 1회 반복해주면 된다. 코드 // 가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘 void Selection_Sort(int arr[], int size){ for(int i = 0; i < size - 1; i++){ i..
배열을 정렬하기 위한 다양한 알고리즘이 있다 이 글은 정렬의 기초 중의 기초인 버블 소트에 대해 작성한다. 버블 소트는 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복한다. 예를 들어 배열 안에 원소가 { 5, 4, 3, 6, 2 }가 있을 때 배열의 크기를 n을 5라고 하면 배열의 끝 부분인 n - 1부터 배열 안의 모든 원소를 비교하여 교환해주는 방식이다. 이를 나타내면 { 5, 4, 3, 6, 2 } -> { 2, 5, 4, 3, 6 } -> { 2, 3 ,5, 4, 6 } -> { 2, 3, 4, 5, 6 } 이 순서대로 정렬을 마친다. 보면 알 수 있듯이 버블 소트는 원소를 한 개씩 정렬해 나가는 걸 알 수가 있다. 알고리즘 요소의 개수를 size라 할때 1. 배열의 처음 인덱스부터 size..
큐는 데이터를 처리하기 위해 일시적으로 쌓아 놓은 자료구조이다. 하지만 큐는 스택과는 다르게 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO, First In First Out)인 점이 스택과 다르다. 쉽게 이해하려면 은행 창구나 선착순 시스템을 생각하면 된다 먼저 온 사람한테 서비스를 제공하듯이 큐도 먼저 들어온 데이터부터 우선 처리해준다. 선형 큐도 있지만 원형 큐를 구현할 줄 알면 선형 큐도 구현할 수 있으니 굳이 설명하지 않는다. 코드 #include using namespace std; struct queue{ int max; // 큐의 최대 용량 int size; // 현재 요소의 개수 int front; // 프런트 int rear; // 리어 int *que; // 큐의 맨 앞..
스택은 데이터를 일시적으로 저장하기 위한 자료구조로 후입선출(LIFO, Last In First Out)이다. 말그대로 데이터를 쌓는다는 느낌으로 이해하면 된다 가장 나중에 쌓은 접시를 제일 먼저 사용하게 된다고 생각하면 이해하기 편할것이다. #include using namespace std; struct stk{ int max; int ptr; int *stk; }; int stk_init(stk* s, int max){ // 스택을 초기화 s->ptr = 0; if((s->stk = new int[max]) == NULL){ s->max = 0; return -1; } s->max = max; return 0; } int push(stk* s, int data){ // 스택에 데이터를 추가 if(s..