Hueestory

스택, 큐, 정렬, 탐색 본문

PS(중단)/algorithm

스택, 큐, 정렬, 탐색

히명 2024. 10. 14. 22:08

스택

- LIFO, DFS

- 삽입(push)과 삭제(pop)이 top에서만 일어남

 

- FIFO, BFS

- 가장 먼저 들어온 데이터는 front, 가장 늦게 들어온 데이터는 back

- 삽입(push)은 back에서, 삭제(pop)는 front에서 일어남

 

버블 정렬

1. 두 인접 데이터의 크기를 비교해 정렬(swap)

2. 개수가 N개 일 때 정렬된 영역 설정을 위해 j < N-1-i

for(int i = 0; i < N-1; i++){
	for(int j = 0; j < N-1-i; j++){
    }
}

 

선택 정렬

1. 최솟값 또는 최댓값을 찾아 가장 앞 데이터와 swap

2. index++, index가 전체 데이터 크기 이상이 되면 종료

 

삽입 정렬

1. 데이터 값을 선택하여, 정렬된 데이터 범위에 삽입될 위치를 탐색

2. 삽입 위치부터 index까지 shift

3. 데이터를 삽입하고 index++, index가 전체 데이터 크기 이상이 되면 종료

 

퀵 정렬

1. pivot을 설정

2. start와 end를 설정하고 pivot과 비교하며 이동

3. start와 nd가 만난 지점의 데이터가 pivot보다 크면 pivot을 좌측에, 작으면 pivot을 우측에 삽입

4. 두 부분으로 분리하여 1~3 과정을 반복하고, 분리 집합이 1개 이하가 될 때 까지 반복

 

병합 정렬

- 나눠진 그룹을 병합하는 과정에서 데이터를 비교하여 병합

 

DFS

- 인접 리스트, 스택(LIFO)

1. 시작 노드를 설정 후 스택에 삽입

2. 스택에서 노드를 꺼낸 후 인접 노드를 다시 스택에 삽입

3. 모든 노드를 탐색할 때까지 반복

 

BFS

- 인접 리스트, 큐(FIFO)

1. 시작 노드를 설정 후 큐에 삽입

2. 큐에서 노드를 꺼낸 후 인접 노드를 다시 큐에 삽입

3. 모든 노드를 탐색할 때까지 반복

 

이진 탐색

1. 중앙값을 설정

2-1. 중앙값>타깃 데이터면 좌측 데이터셋을 선택

2-2. 중앙값<타깃 데이터면 우측 데이터셋을 선택

3. 중앙값==타깃 데이터일 때까지 반복

'PS(중단) > algorithm' 카테고리의 다른 글

소수 판별 코드  (0) 2024.08.27
이분 그래프 (bipartite graph)  (0) 2024.05.29
그래프 탐색 (계속 추가)  (0) 2024.05.28
Comments