니꼴라스) #0~3

Nikko의 알고리즘 및 데이터 구조

#0

★초보분들은 영상에 들어가기 전에 보통 필요가 없기 때문에 이 내용을 공부하기 보다는 먼저 코딩을 시작하는 것이 중요합니다. 그럼 언제 배울까요? 어플리케이션을 빌드해서 배포했는데 코드 오류는 없는데 왠지 느려요! 이때 이 정보를 적용하면 매우 빠른 속도로 애플리케이션을 실행할 수 있다.

ㄴ 이 말 다 진짜다.. 관심가지고 찾아봤는데 프로그래밍도 제대로 못하는 코린이가 써먹지도 못하고…

나중에 알고리즘과 데이터 구조를 배우십시오.

연산

작업을 수행하기 위해 컴퓨터가 따라야 하는 일련의 지침입니다.

그것은 효율적인 루틴, 즉 일상 생활에서 특정 목적을 위해 수행되는 여러 동작의 연속과 같습니다.

데이터 구조

데이터는 석유와 같습니다. AI를 훈련시키기 위해서는 데이터가 필요하기 때문입니다.

데이터 구조는 데이터를 구성하며, 어떤 데이터 구조를 사용하느냐에 따라 서비스의 처리 속도가 달라집니다.

정렬, 검색, 추가, 편집 등

1. 검색

2. 독서

3. 붙여넣기

4. 삭제

이 네 가지 사항을 염두에 두고 언제 어떤 상황에서 필요한 데이터 구조를 선택할 수 있습니다.

#하나

1.배열

가장 기본적인 데이터 구조 배열로

시간 복잡도: 데이터 구조의 많은 느리고 빠른 작업 또는 알고리즘이 측정되는 방식

그들이 취하는 많은 단계에서 그들이 얼마나 빠른지 측정하십시오.

데이터 구조 또는 알고리즘의 처리 속도를 측정합니다. 실제 처리 시간으로 측정되는 것이 아니라 단계 수로 측정되며 단계가 적을수록 처리 속도가 빨라집니다.

어레이 읽기, 검색, 추가, 삭제

스토리지 관점에서 어레이의 모습

기억은 데이터를 담는 상자와 같습니다.

휘발성 메모리 – RAM은 원하는 곳 어디에서나 액세스할 수 있습니다.

비휘발성 스토리지 – 처음부터 디스크 수에 따라 액세스

작업

1. 배열을 읽는 방법

인덱스는 0에서 시작하며 위치를 알고 있으면 배열의 데이터에 액세스할 수 있습니다.

2. 검색

데이터 상자 또는 저장소에는 액세스할 수 있는 주소가 있지만 값(항목, 항목)을 보려면 해당 주소에서 상자를 열어야 합니다.

그래서 찾고자 하는 가치의 존재나 위치를 찾는다면, 찾을 때까지 모든 체크박스를 체크해야 하는데, 이 작업은 매우 오랜 시간이 걸립니다. 0부터 끝까지 찾는 것을 선형 탐색이라고 합니다.

3. 삽입(추가) 또는 쓰기

어레이를 생성할 때 미리 공간을 예약해야 합니다.

세 가지 시나리오가 발생합니다.

1) 마지막에 추가합니다.

컴퓨터는 스토리지 어레이가 시작되는 위치와 길이를 기억하기 때문에 어레이의 마지막 열에 추가하는 것이 가장 빠르고 최상의 시나리오입니다.

2) 중간에 추가합니다.

추가할 위치 뒤로 요소를 이동한 후 생성된 공간에 요소를 추가합니다.

3) 앞에 추가합니다.

최악의 경우 모든 요소를 ​​이동한 후 처음에 생성된 공간이 추가되고 배열 크기가 클수록 더 나빠집니다.

또 다른 최악의 시나리오는 어레이가 이미 가득 차서 값을 추가해야 하는 경우입니다.

이 경우 더 큰 새 배열을 만든 다음 거기에 요소를 복사하는 데 시간이 오래 걸립니다.

4. 삭제

추가와 마찬가지로 끝에 있는 요소를 삭제하는 것이 가장 빠른 시나리오이며 대부분의 시나리오는 배열의 중간 요소를 삭제하므로 삭제 후 남은 빈 공간을 채우기 위해 나중에 배열의 값을 이동해야 합니다.

최악의 경우 삭제 후 첫 번째 요소를 삭제하여 인덱스 0의 빈 공간을 채우기 위해 모든 요소를 ​​이동해야 합니다.

#2

이진 검색(이진 검색 알고리즘) 및 선형 검색

그들은 모두 검색 알고리즘 제품군에 속하며 검색 관련 작업을 수행하는 제품군입니다.

가능한 한 빨리 검색 프로세스를 완료하십시오.

또 다른 알고리즘 계열인 정렬은 데이터를 구성합니다.

AZ, 작은 숫자 – 큰 숫자로 정렬합니다.

선형 검색

인덱스 0이 가장 자연스러운 검색 방법이기 때문에 배열의 후반부에 요소가 있거나 전혀 없으면 선형 검색 시간이 길어져 선형 시간 복잡도가 발생합니다.

노력과 시간은 비례합니다. 즉, 노력이 증가하면 실행 시간도 비례하여 선형적으로 증가합니다.

이진 검색

모든 배열에서 사용할 수 있는 선형 검색과 달리 이진 검색은 정렬된 배열에서만 사용할 수 있습니다.

일부 알고리즘은 특정 데이터 구조에만 사용할 수 있습니다.

이진 검색은 하나를 이등분하고 중간에 있는 요소가 찾을 대상 요소의 값보다 크거나 작은지 확인하고 이등분할 요소가 대상이 있는 배열 영역에서 찾을 때까지 반복하는 것입니다. 위치한 요소가 있습니다.

(업다운 게임처럼)

배열 또는 입력 크기가 두 배가 되더라도 단계는 단순히 +1입니다.

이진 검색에는 배열 정렬이 필요하고 이 작업에도 시간이 걸리며 여기에서 트레이드 오프가 발생합니다.

검색을 많이 하면 먼저 정렬을 해야 하고, 배열을 정렬하려면 요소를 추가하면서 시간이 걸립니다.

이러한 장단점을 명확하게 확인하고 알고리즘과 데이터 구조를 알아야 합니다.

#삼

빅 오

CS 유사 알고리즘의 속도 및 시간 복잡도 표현

1) 정시(Constant Time) 상수함수 “O(1)”의 형태를 나타내며 아무리 입력이 많아져도(복잡해져도) 스텝은 변하지 않으니 최고다. . 하지만 현실적으로 어렵다.

2) 선형 시간이 O(N)만큼 증가할 때마다 단계가 누적됩니다.

3) 사각 타임 인터리브 루프가 있을 때 발생합니다.

2반복 구조이기 때문에 2차 시간 복잡도는 “n^2″이고 선형 시간은 입력이 증가할수록 더 효율적이 됩니다.

4) 대수 시간(Logarithmic time) 이진 탐색 알고리즘을 기술하는데 사용된다.

“O(logN)”

* 지수(곱하는 횟수) > 로그(나누는 횟수)

입력이 증가함에 따라 리드 타임보다 효율적입니다. (물론 일정한 시간보다 느림)

시간 복잡도