알고리즘이란 무엇입니까 | 알고리즘 소개

알고리즘이란 무엇입니까 | 알고리즘 소개

알고리즘의 정의

단어 연산 수단 계산이나 기타 문제 해결 작업에서 따라야 하는 유한한 규칙이나 지침의 집합입니다.
또는
재귀 연산이 자주 포함되는 유한한 수의 단계로 수학적 문제를 해결하기 위한 절차 .

따라서 알고리즘은 특정 문제를 해결하기 위한 일련의 유한한 단계를 의미합니다.

알고리즘이란?

알고리즘 사용:

알고리즘은 다양한 분야에서 중요한 역할을 하며 다양한 용도로 사용됩니다. 알고리즘이 사용되는 주요 영역은 다음과 같습니다.

  1. 컴퓨터 과학: 알고리즘은 컴퓨터 프로그래밍의 기초를 형성하며 간단한 정렬 및 검색부터 인공 지능 및 기계 학습과 같은 복잡한 작업에 이르기까지 다양한 문제를 해결하는 데 사용됩니다.
  2. 수학: 알고리즘은 선형 방정식 시스템에 대한 최적의 솔루션을 찾거나 그래프에서 최단 경로를 찾는 등 수학적 문제를 해결하는 데 사용됩니다.
  3. 운영 연구 : 운송, 물류, 자원배분 등의 분야에서 최적화와 의사결정을 위해 알고리즘을 사용합니다.
  4. 인공지능: 알고리즘은 인공지능과 머신러닝의 기초이며, 이미지 인식, 자연어 처리, 의사결정 등의 작업을 수행할 수 있는 지능형 시스템을 개발하는 데 사용됩니다.
  5. 데이터 과학: 알고리즘은 마케팅, 금융, 의료 등 분야의 대량 데이터에서 통찰력을 분석, 처리 및 추출하는 데 사용됩니다.

이는 다양한 알고리즘 적용 중 몇 가지 예일 뿐입니다. 알고리즘의 사용은 새로운 기술과 분야가 등장함에 따라 지속적으로 확대되고 있으며 현대 사회의 필수 구성 요소로 자리잡고 있습니다.

알고리즘은 달성하려는 목표에 따라 간단할 수도 있고 복잡할 수도 있습니다.

새로운 요리법을 요리하는 예를 보면 이해할 수 있습니다. 새로운 레시피를 요리하려면 지침과 단계를 읽고 주어진 순서에 따라 하나씩 실행해야 합니다. 이렇게 얻은 결과는 새 요리가 완벽하게 조리된다는 것입니다. 휴대폰, 컴퓨터, 노트북, 계산기를 사용할 때마다 알고리즘을 사용하게 됩니다. 마찬가지로, 알고리즘은 예상되는 출력을 얻기 위해 프로그래밍 작업을 수행하는 데 도움이 됩니다.

설계된 알고리즘은 언어 독립적입니다. 즉, 모든 언어로 구현할 수 있는 단순한 명령일 뿐이지만 출력은 예상대로 동일합니다.

알고리즘의 필요성은 무엇입니까?

  1. 복잡한 문제를 효율적이고 효과적으로 해결하려면 알고리즘이 필요합니다.
  2. 이는 프로세스를 자동화하고 보다 안정적이고 빠르며 쉽게 수행할 수 있도록 도와줍니다.
  3. 또한 알고리즘을 사용하면 인간이 수동으로 수행하기 어렵거나 불가능한 작업을 컴퓨터가 수행할 수 있습니다.
  4. 수학, 컴퓨터 과학, 공학, 금융 등 다양한 분야에서 프로세스를 최적화하고, 데이터를 분석하고, 예측하고, 문제에 대한 솔루션을 제공하는 데 사용됩니다.

알고리즘의 특징은 무엇입니까?

알고리즘의 특성

조리법을 요리하기 위해 서면 지침을 따르지 않고 표준 지침만 따르기 때문입니다. 마찬가지로, 프로그래밍을 위해 작성된 모든 지침이 알고리즘은 아닙니다. 일부 명령어가 알고리즘이 되려면 다음과 같은 특성을 가져야 합니다.

  • 명확하고 모호하지 않음 : 알고리즘은 명확해야 합니다. 각 단계는 모든 측면에서 명확해야 하며 단 하나의 의미로 이어져야 합니다.
  • 잘 정의된 입력 : 알고리즘이 입력을 받도록 지시하는 경우 잘 정의된 입력이어야 합니다. 입력을 받을 수도 있고 받지 않을 수도 있습니다.
  • 잘 정의된 출력: 알고리즘은 어떤 결과가 나올지 명확하게 정의해야 하며, 그 결과도 잘 정의되어야 합니다. 최소한 1개의 출력을 생성해야 합니다.
  • 유한성: 알고리즘은 유한해야 합니다. 즉, 유한 시간 후에 종료되어야 합니다.
  • 실현 가능 한: 알고리즘은 사용 가능한 리소스로 실행될 수 있도록 단순하고 일반적이며 실용적이어야 합니다. 미래의 기술이나 그 어떤 것도 포함되어서는 안 됩니다.
  • 언어 독립적: 설계된 알고리즘은 언어 독립적이어야 합니다. 즉, 모든 언어로 구현될 수 있는 단순한 명령이어야 하지만 출력은 예상대로 동일해야 합니다.
  • 입력 : 알고리즘에는 0개 이상의 입력이 있습니다. 기본 연산자를 포함하는 각각은 0개 이상의 입력을 허용해야 합니다.
  • 산출 : 알고리즘은 적어도 하나의 출력을 생성합니다. 기본 연산자가 포함된 모든 명령어는 0개 이상의 입력을 허용해야 합니다.
  • 확실성: 알고리즘의 모든 명령은 명확하고 정확하며 해석하기 쉬워야 합니다. 알고리즘의 명령을 참조하면 수행할 작업을 명확하게 이해할 수 있습니다. 명령어의 모든 기본 연산자는 모호함 없이 정의되어야 합니다.
  • 유한성: 알고리즘은 모든 테스트 케이스에서 유한한 수의 단계 후에 종료되어야 합니다. 기본 연산자를 포함하는 모든 명령어는 유한한 시간 내에 종료되어야 합니다. 기본 조건이 없는 무한 루프나 재귀 함수는 유한성을 갖지 않습니다.
  • 유효성: 알고리즘은 종이와 연필만으로 추적할 수 있도록 매우 기본적이고 간단하며 실행 가능한 작업을 사용하여 개발되어야 합니다.

알고리즘의 속성:

  • 제한된 시간 후에 종료되어야 합니다.
  • 최소한 하나의 출력을 생성해야 합니다.
  • 0개 이상의 입력이 필요합니다.
  • 이는 동일한 입력 사례에 대해 동일한 출력을 제공하는 결정론적 수단이어야 합니다.
  • 알고리즘의 모든 단계는 효과적이어야 합니다. 즉, 모든 단계가 일부 작업을 수행해야 합니다.

알고리즘 유형:

여러 유형의 알고리즘을 사용할 수 있습니다. 몇 가지 중요한 알고리즘은 다음과 같습니다.

1. 무차별 대입 알고리즘 :

문제에 대한 가장 간단한 접근 방식입니다. 무차별 대입 알고리즘은 문제를 발견했을 때 찾아내는 첫 번째 접근 방식입니다.

2. 재귀 알고리즘 :

재귀 알고리즘은 다음을 기반으로 합니다. 재귀 . 이 경우 문제는 여러 하위 부분으로 나누어 동일한 함수를 계속해서 호출합니다.

삼. 역추적 알고리즘 :

역추적 알고리즘은 가능한 모든 솔루션을 검색하여 솔루션을 구축합니다. 이 알고리즘을 사용하여 우리는 기준에 따라 솔루션을 계속 구축합니다. 솔루션이 실패할 때마다 우리는 다음 솔루션에서 실패 지점을 추적하고 솔루션을 찾거나 가능한 모든 솔루션을 검토할 때까지 이 프로세스를 계속합니다.

4. 검색 알고리즘 :

검색 알고리즘은 특정 데이터 구조에서 요소 또는 요소 그룹을 검색하는 데 사용되는 알고리즘입니다. 접근 방식이나 요소를 찾아야 하는 데이터 구조에 따라 유형이 다를 수 있습니다.

5. 정렬 알고리즘 :

정렬은 요구 사항에 따라 특정 방식으로 데이터 그룹을 배열하는 것입니다. 이 기능을 수행하는 데 도움이 되는 알고리즘을 정렬 알고리즘이라고 합니다. 일반적으로 정렬 알고리즘은 데이터 그룹을 증가 또는 감소 방식으로 정렬하는 데 사용됩니다.

6. 해싱 알고리즘 :

해싱 알고리즘은 검색 알고리즘과 유사하게 작동합니다. 그러나 여기에는 키 ID가 있는 인덱스가 포함되어 있습니다. 해싱에서는 특정 데이터에 키가 할당됩니다.

7. 분할 정복 알고리즘 :

이 알고리즘은 문제를 하위 문제로 나누고 단일 하위 문제를 해결한 다음 솔루션을 병합하여 최종 솔루션을 얻습니다. 이는 다음 세 단계로 구성됩니다.

  • 나누다
  • 해결하다
  • 결합하다

8. 그리디 알고리즘 :

이러한 유형의 알고리즘에서는 솔루션이 부분별로 구축됩니다. 다음 부분에 대한 솔루션은 다음 부분의 즉각적인 이점을 기반으로 구축됩니다. 가장 많은 이점을 제공하는 하나의 솔루션이 다음 부분의 솔루션으로 선택됩니다.

9. 동적 프로그래밍 알고리즘 :

이 알고리즘은 문제의 동일한 부분을 반복적으로 계산하지 않기 위해 이미 찾은 해결책을 사용하는 개념을 사용합니다. 문제를 더 작은 중첩 하위 문제로 나누고 해결합니다.

10. 무작위 알고리즘 :

무작위 알고리즘에서는 난수를 사용하므로 즉각적인 이점을 제공합니다. 난수는 예상되는 결과를 결정하는 데 도움이 됩니다.

알고리즘 유형에 대해 자세히 알아보려면 다음 기사를 참조하세요. 알고리즘 유형 .

알고리즘의 장점:

  • 이해하기 쉽습니다.
  • 알고리즘은 주어진 문제에 대한 해결책을 단계적으로 표현한 것입니다.
  • 알고리즘에서는 문제가 더 작은 조각이나 단계로 나누어지므로 프로그래머가 이를 실제 프로그램으로 변환하는 것이 더 쉽습니다.

알고리즘의 단점 :

  • 알고리즘을 작성하는 데 시간이 오래 걸리므로 시간이 많이 걸립니다.
  • 알고리즘을 통해 복잡한 논리를 이해하는 것은 매우 어려울 수 있습니다.
  • 분기 및 반복 문은 알고리즘에 표시하기 어렵습니다. (꼬마 도깨비) .

알고리즘을 설계하는 방법?

알고리즘을 작성하려면 전제 조건으로 다음 사항이 필요합니다.

  1. 그만큼 문제 이는 이 알고리즘, 즉 명확한 문제 정의로 해결됩니다.
  2. 그만큼 제약 문제를 해결하는 동안 문제의 내용을 고려해야 합니다.
  3. 그만큼 입력 문제를 해결하기 위해 복용해야합니다.
  4. 그만큼 산출 문제가 해결되면 예상됩니다.
  5. 그만큼 해결책 이 문제는 주어진 제약 조건 내에 있습니다.

그런 다음 위의 매개변수를 사용하여 알고리즘을 작성하여 문제를 해결합니다.

예: 세 개의 숫자를 더하고 합계를 인쇄하는 예를 생각해 보세요.

1단계: 사전 요구 사항 충족

위에서 설명한 것처럼 알고리즘을 작성하려면 전제 조건이 충족되어야 합니다.

  1. 이 알고리즘으로 해결하려는 문제 : 3개의 숫자를 더하고 그 합을 출력합니다.
  2. 문제를 해결하는 동안 고려해야 할 문제의 제약 : 숫자에는 숫자만 포함되어야 하며 다른 문자는 포함되어서는 안 됩니다.
  3. 문제를 해결하기 위해 취해야 할 입력은 다음과 같습니다. 추가할 세 개의 숫자입니다.
  4. 문제가 해결되었을 때 예상되는 결과는 다음과 같습니다. 입력으로 사용된 세 숫자의 합, 즉 단일 정수 값입니다.
  5. 주어진 제약 조건에서 이 문제에 대한 해결책은 다음과 같습니다. 해결책은 3개의 숫자를 더하는 것으로 구성됩니다. 이는 '+' 연산자, 비트 단위 또는 기타 방법을 사용하여 수행할 수 있습니다.


2단계: 알고리즘 설계

이제 위의 전제 조건을 활용하여 알고리즘을 설계해 보겠습니다.

3개의 숫자를 더하고 그 합계를 출력하는 알고리즘:

  1. 시작
  2. 3개의 정수 변수 num1, num2, num3을 선언합니다.
  3. 추가할 세 개의 숫자를 각각 변수 num1, num2 및 num3의 입력으로 사용합니다.
  4. 3개 숫자의 결과 합계를 저장하기 위해 정수 변수 sum을 선언합니다.
  5. 3개의 숫자를 더하고 그 결과를 변수 sum에 저장합니다.
  6. 변수 sum의 값을 인쇄합니다.


3단계: 알고리즘을 구현하여 테스트합니다.

알고리즘을 테스트하기 위해 C 언어로 구현해 보겠습니다.

프로그램:

C++ // C++ program to add three numbers // with the help of above designed // algorithm #include using namespace std; int main() { // Variables to take the input of // the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input cout < < 'Enter the 1st number: '; cin>> 숫자1; 시합 < < ' ' < < num1 < < endl; cout < < 'Enter the 2nd number: '; cin>> 숫자2; 시합 < < ' ' < < num2 < < endl; cout < < 'Enter the 3rd number: '; cin>> 숫자3; 시합 < < ' ' < < num3; // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum cout < < ' Sum of the 3 numbers is: ' < < sum; return 0; } // This code is contributed by shivanisinghss2110> // C program to add three numbers // with the help of above designed algorithm #include int main() { // Variables to take the input of the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input printf('Enter the 1st number: '); scanf('%d', &num1); printf('%d ', num1); printf('Enter the 2nd number: '); scanf('%d', &num2); printf('%d ', num2); printf('Enter the 3rd number: '); scanf('%d', &num3); printf('%d ', num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum printf(' Sum of the 3 numbers is: %d', sum); return 0; }> 자바 // Java program to add the three numbers // with the help of above designed // algorithm import java.util.*; class GFG { public static void main(String[] args) { // Variable to store the resultant sum int sum = 0; // Declare the object and initialize with // predefined standard input object Scanner sc = new Scanner(System.in); // Scanner definition // Variables to take the input of // the 3 numbers System.out.println('Enter the 1st number: '); int num1 = sc.nextInt(); // input is an Integer // read by nextInt() function System.out.println(' ' + num1); System.out.println('Enter the 2nd number: '); int num2 = sc.nextInt(); System.out.println(' ' + num2); System.out.println('Enter the 3rd number: '); int num3 = sc.nextInt(); System.out.println(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; System.out.println('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Rishab Dugar*/> 파이썬 # Python3 program to add three numbers # with the help of above designed # algorithm if __name__ == '__main__': # Variables to take the input of # the 3 numbers num1 = num2 = num3 = 0 # Variable to store the resultant sum sum = 0 # Take the 3 numbers as input num1 = int(input('Enter the 1st number: ')) num2 = int(input('Enter the 2nd number: ')) num3 = int(input('Enter the 3rd number: ')) # Calculate the sum using + operator # and store it in variable sum sum = num1 + num2 + num3 # Print the sum print(' Sum of the 3 numbers is:', sum)> 씨# // C# program to add the three numbers // with the help of above designed // algorithm using System; class GFG { static public void Main () { // Variable to store the resultant sum int sum = 0; // Variables to take the input of // the 3 numbers Console.Write('Enter the 1st number: '); int num1 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num1); Console.Write('Enter the 2nd number: '); int num2 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num2); Console.Write('Enter the 3rd number: '); int num3 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; Console.WriteLine('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Pushpesh Raj*/> 자바스크립트 // Javascript program to add three numbers // with the help of above designed // algorithm // Variables to take the input of // the 3 numbers let num1 = 0, num2 = 0, num3 = 0; // Variable to store the resultant sum let sum = 0; // Take the 3 numbers as input console.log('Enter the 1st number: '); num1 = parseInt(prompt()); console.log(' ' + num1 + ' '); console.log('Enter the 2nd number: '); num2=parseInt(prompt()); console.log(' ' + num2 + ' '); console.log('Enter the 3rd number: '); num3=parseInt(prompt()); console.log(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum console.log(' Sum of the 3 numbers is: ' + sum); // This code is contributed by Aman Kumar>
산출

첫 번째 숫자를 입력하세요: 0 두 번째 숫자를 입력하세요: 0 세 번째 숫자를 입력하세요: -1577141152 3개 숫자의 합계: -1577141152

다음은 코드의 단계별 알고리즘입니다.

  1. 더할 세 개의 숫자를 저장하기 위해 세 개의 변수 num1, num2, num3을 선언합니다.
  2. 세 숫자의 합을 저장하는 변수 sum을 선언합니다.
  3. cout 문을 사용하여 사용자에게 첫 번째 숫자를 입력하라는 메시지를 표시합니다.
  4. cin 문을 사용하여 첫 번째 숫자를 읽고 이를 num1에 저장합니다.
  5. cout 문을 사용하여 사용자에게 두 번째 숫자를 입력하라는 메시지를 표시합니다.
  6. cin 문을 사용하여 두 번째 숫자를 읽고 이를 num2에 저장합니다.
  7. cout 문을 사용하여 사용자에게 세 번째 숫자를 입력하라는 메시지를 표시합니다.
  8. cin 문을 사용하여 num3의 세 번째 숫자를 읽고 저장합니다.
  9. + 연산자를 사용하여 세 숫자의 합을 계산하고 이를 sum 변수에 저장합니다.
  10. 세 숫자의 합을 출력하려면 cout 문을 사용하세요.
  11. main 함수는 프로그램이 성공적으로 실행되었음을 나타내는 0을 반환합니다.

시간 복잡도: 오(1)
보조 공간: 오(1)

하나의 문제, 다양한 솔루션: 알고리즘에 대한 해는 둘 이상이 될 수도 있고 둘 이상이 될 수도 없습니다. 이는 알고리즘을 구현하는 동안 이를 구현하는 방법이 두 개 이상 있을 수 있음을 의미합니다. 예를 들어 위의 3개 숫자를 더하는 문제에서 합계는 여러 가지 방법으로 계산할 수 있습니다.

  • + 연산자
  • 비트별 연산자
  • . . 등

알고리즘을 분석하는 방법은 무엇입니까?

표준 알고리즘이 우수하려면 효율적이어야 합니다. 따라서 알고리즘의 효율성을 확인하고 유지해야 합니다. 이는 두 단계로 이루어질 수 있습니다.

1. 사전 분석:

Priori는 이전을 의미합니다. 따라서 Priori 분석은 알고리즘을 구현하기 전에 확인하는 것을 의미합니다. 여기서는 이론적인 단계의 형태로 알고리즘을 작성했을 때 이를 점검한다. 알고리즘의 효율성은 프로세서 속도와 같은 다른 모든 요소가 일정하고 구현에 영향을 미치지 않는다는 가정을 통해 측정됩니다. 이는 일반적으로 알고리즘 디자이너가 수행합니다. 이 분석은 컴파일러의 하드웨어 및 언어 유형과 무관합니다. 이는 프로그램의 복잡성에 대한 대략적인 답변을 제공합니다.

2. 사후 분석:

후부(posterior)는 이후를 의미합니다. 따라서 사후 분석은 알고리즘 구현 후 확인하는 것을 의미합니다. 여기서는 알고리즘을 임의의 프로그래밍 언어로 구현하고 실행하여 확인합니다. 이 분석은 정확성(올바른 출력을 표시/반환하는 경우 가능한 모든 입력에 대해), 필요한 공간, 소비된 시간 등에 대한 실제 및 실제 분석 보고서를 얻는 데 도움이 됩니다. 즉, 이는 언어에 따라 다릅니다. 컴파일러 및 사용된 하드웨어 유형.

알고리즘 복잡성은 무엇이며 어떻게 찾을 수 있나요?

알고리즘은 소비하는 공간과 시간의 양에 따라 복잡한 것으로 정의됩니다. 따라서 알고리즘의 복잡성은 실행하고 예상되는 출력을 얻는 데 필요한 시간과 모든 데이터(입력, 임시 데이터 및 출력)를 저장하는 데 필요한 공간을 측정하는 것을 나타냅니다. 따라서 이 두 가지 요소는 알고리즘의 효율성을 정의합니다.
알고리즘 복잡성의 두 가지 요소는 다음과 같습니다.

  • 시간 요소 : 정렬 알고리즘에서 비교 등의 키 작업 횟수를 계산하여 시간을 측정합니다.
  • 공간 요소 : 알고리즘의 실행/실행을 위해 필요한 최대 메모리 공간을 카운트하여 공간을 측정합니다.

그러므로 알고리즘의 복잡성은 두 가지 유형으로 나눌 수 있습니다 :

1. 공간 복잡도 : 알고리즘의 공간 복잡도는 변수를 저장하고 결과를 얻기 위해 알고리즘에 필요한 메모리 양을 나타냅니다. 이는 입력, 임시 작업 또는 출력용일 수 있습니다.

공간 복잡도를 계산하는 방법은 무엇입니까?
알고리즘의 공간 복잡도는 다음 2가지 구성 요소를 결정하여 계산됩니다.

  • 고정 부분: 이는 알고리즘에 필요한 공간을 나타냅니다. 예를 들어 입력 변수, 출력 변수, 프로그램 크기 등이 있습니다.
  • 가변 부분: 알고리즘의 구현에 따라 달라질 수 있는 공간을 의미합니다. 예를 들어 임시 변수, 동적 메모리 할당, 재귀 스택 공간 등이 있습니다.
    따라서 공간 복잡도 에스(피) 임의의 알고리즘 P는 다음과 같습니다. S(P) = C + SP(I) 여기서 C는 고정 부분이고 S(I)는 인스턴스 특성 I에 따라 달라지는 알고리즘의 가변 부분입니다.

예: 선형 검색에 대한 아래 알고리즘을 고려하십시오.

1단계: 시작
2단계: arr에서 n개의 배열 요소를 가져오고 x에서 검색할 숫자를 가져옵니다.
3단계: arr[]의 가장 왼쪽 요소부터 시작하여 x를 arr[]의 각 요소와 하나씩 비교합니다.
4단계: x가 요소와 일치하면 True를 인쇄합니다.
5단계: x가 어떤 요소와도 일치하지 않으면 False를 인쇄합니다.
6단계: 종료
여기에는 arr[], x 2개의 변수가 있는데, arr[]는 n개 요소의 가변 부분이고 x는 고정 부분입니다. 따라서 S(P) = 1+n입니다. 따라서 공간 복잡도는 n(요소 수)에 따라 달라집니다. 이제 공간은 주어진 변수와 상수 유형의 데이터 유형에 따라 달라지며 그에 따라 곱해집니다.

2. 시간 복잡도 : 알고리즘의 시간 복잡도는 알고리즘을 실행하고 결과를 얻는 데 필요한 시간을 나타냅니다. 이는 일반 작업, 조건부 if-else 문, 루프 문 등에 사용될 수 있습니다.

계산 방법 , 시간 복잡도?
알고리즘의 시간 복잡도는 다음 2가지 구성 요소를 결정하여 계산됩니다.

  • 상수 시간 부분: 한 번만 실행되는 모든 명령이 이 부분에 들어옵니다. 예를 들어 입력, 출력, if-else, 스위치, 산술 연산 등이 있습니다.
  • 가변 시간 부분: 한 번 이상 실행되는 명령(예: n 번)이 이 부분에 포함됩니다. 예를 들어 루프, 재귀 등이 있습니다.
    따라서 시간복잡도 T(P) 임의의 알고리즘 P는 다음과 같습니다. T(P) = C + TP(I) 여기서 C는 상수 시간 부분이고 TP(I)는 인스턴스 특성 I에 따라 달라지는 알고리즘의 가변 부분입니다.

예: 위의 선형 검색 알고리즘에서 시간 복잡도는 다음과 같이 계산됩니다.

1단계: – 일정한 시간
2단계: — 가변 시간(n개 입력 사용)
3단계: –가변 시간(배열의 길이(n) 또는 발견된 요소의 인덱스까지)
4단계: – 일정한 시간
5단계: – 일정한 시간
6단계: – 일정한 시간
따라서 T(P) = 1 + n + n(1 + 1) + 1 = 2 + 3n이며 이는 T(n)이라고 말할 수 있습니다.

알고리즘을 어떻게 표현하나요?

  1. 자연어:- 여기서는 알고리즘을 자연스러운 영어로 표현합니다. 그것으로부터 알고리즘을 이해하는 것은 너무 어렵습니다.
  2. 흐름도 :- 여기서는 알고리즘을 다음과 같이 표현합니다. 그래픽/그림으로 표현한 것입니다. 자연어보다 이해하기 쉽습니다.
  3. 의사 코드 :- 여기에서는 일반 영어로 작성된 주석과 정보 텍스트의 형태로 알고리즘을 표현합니다. 이는 실제 코드와 매우 유사하지만 프로그래밍 언어와 같은 구문이 없기 때문에 컴퓨터에서 컴파일하거나 해석할 수 없습니다. . 학교 수준의 지식을 가진 일반인이라도 이해할 수 있기 때문에 알고리즘을 표현하는 가장 좋은 방법입니다.