일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준
- baekjoon
- UNIX
- 정보처리기사
- java
- Beakjoon
- AMBA BUS
- vitis
- boj
- Backjoon
- verilog HDL
- 정처기
- amba
- 자격증
- FPGA
- 리눅스
- verilog
- linux
- Zynq
- axi
- SQL
- Vivado
- HDLBits
- 코딩테스트
- 실기
- Bus
- Xilinx
- hdl
- C++
- chip2chip
- Today
- Total
Hueestory
스택, 큐, 정렬, 탐색 본문
스택
- 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 |