정의💡 한쪽 끝에서 시작하여 원하는 요소를 찾을 때까지 목록의 각 요소를 조사하는 알고리즘요소를 찾지 못하는 경우에는 데이터셋의 끝까지 간다.효용배열, 연결리스트의 정렬여부와 무관하게 원소를 탐색할 수 있음그러나 배열이 정렬되어 있고 원소가 배열 내에 존재하는 경우에 탐색 성능이 올라감절차1. 시작: 컬렉션의 첫번째 원소에서부터 시작2. 비교: 현재의 원소와 찾고자하는 원소와 비교3. 확인: 현재 원소가 찾고자하는 원소인 경우 true 또는 현재 원소의 인덱스를 반환4. 이동: 찾고자 하는 원소가 아닌 경우에는 컬렉션의 다음 원소로 이동5. 반복: 컬렉션의 끝에 도달할 때까지 2에서 4의 과정을 반복6. 찾지 못한 경우: 컬렉션의 끝에 도달해도 원소를 찾을 수 없는 경우에는 찾을 수 없음 반환구현Hor..
컴퓨터란?아침에 일어나서 자기 전까지 컴퓨터는 우리 삶에 항상 붙어 있다. 날씨 확인, 이메일 보내기, 유튜브 스트리밍 등 모두 컴퓨터가 있어서 가능한 일이다. 그러면 컴퓨터란 정확히 무엇일까? 컴퓨터는 데이터를 처리하고 연산을 수행하기 위해 설계된 전자기기다. 맥북, 노트북부터 스마트폰까지 모두 컴퓨터에 해당한다.컴퓨터의 성능컴퓨터로 작업하다가 간혹 느려질 때가 있다. 웹 사이트에 접속하려고 하는데 로딩이 3초 이상 걸릴 때도 있고, 컴퓨터를 켤 때 평소보다 느려지는 경우도 있다. 대부분 이러한 문제는 성능과 관련되어 있다. 컴퓨터의 성능을 표현하는 여러 가지 방법이 있지만, 최대한 추상화하면 다음과 같다:💡 데이터를 얼마나 짧은 시간 동안 얼마만큼의 양을 많이 처리할 수 있는가? 컴퓨터는 CPU, ..
정의💡 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘버블 정렬은 다른 정렬과 다르게 모든 원소를 비교하는 것이 특징이다. 구현#include using namespace std;int main(){ int arr[] = {3,2,4,1,5}; int n = sizeof(arr) / sizeof(int); for(int i = 0; i arr[j+1]){ swap(arr[j], arr[j+1]); } } } for(int i = 0; i
정렬이란?💡원소들의 크기에 따라 순서를 배치하는 것내림차순: 크기가 증가하는 순으로 원소들을 배치하는 것오름차순: 크기가 감소가는 순으로 원소들을 배치하는 것 선택정렬(Selection Sort)💡리스트를 반복적으로 순회하며 현재 위치에 맞는 값을 선택하여 제자리에 놓는 방식동작방식초기상태첫번째 반복두번째 반복반복종료구현#include using namespace std;int main(){ int arr[] = {8, 3, 2, 5, 1, 1, 2, 5, 8, 9}; int size = sizeof(arr) / sizeof(arr[0]); // 선택정렬 for (int i = 0; i arr[j]) { swap(a..
개요💡두 변수의 값의 교체알고리즘에서 swap은 두 변수의 값들을 서로 교체하는 과정이다. swap은 여러 알고리즘에서 기본 연산으로 사용된다. 예를 들어 정렬 알고리즘에서는 요소를 올바른 위치로 이동시키기 위해 swap 연산을 사용한다. 기본개념1) 임시변수를 사용하는 경우temp = aa = bb = temp2) XOR 연산을 하는 경우a = a ^ bb = a ^ ba = a ^ b3) 덧셈, 뺄셈을 하는 경우a = a + bb = a - ba = a - b Swap의 구현1) 포인터를 사용하는 경우void swap(int *i, int *j){ int temp = *i; *i = *j; *j = temp;}2) 레퍼런스를 사용하는 경우void swap(int &i, int &j){ int tem..
DMA란?DMA란 CPU의 관여 없이 입출력장치가 메모리에 직접 접근하는 기능이다. 디바이스는 CPU의 관여 없이도 스스로 읽기/쓰기 명령을 수행할 수 있다.DMA의 장단점장점데이터 읽기와 쓰기는 시간이 많이 걸리는 작업이다. DMA를 사용하게 된다면 CPU는 데이터 읽기/쓰기와 같은 시간이 오래 걸리는 작업들을 하는 대신에 다른 중요한 작업들을 할 수 있다.단점DMA는 CPU를 거치지 않아 데이터 접근 시간이 단축될 수 있지만 CPU를 우회하기 때문에 보안 문제가 발생할 수 있다. DMA를 하기 위해서 별도의 설정을 해야하기 때문에 구현이 복잡할 수 있다.