알고리즘 11

[알고리즘] 버블정렬, 단순 선택 정렬, 단순 삽입 정렬

버블 정렬 비교 횟수 3n(n-1) / 4 시간복잡도 O(n^2) 으로 효율이 좋지않은 알고리즘 단순 선택 정렬 비교 횟수 n(n-1) / 2 단순 삽입 정렬 비교 횟수 n^2 /2 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 #include #define Swap(type, x, y) do{type..

알고리즘 2021.10.04

[알고리즘]소수의 나열 (소수 구하기)

소수란? 소수 : 자기 자신과 1이외의 어떤 정수로도 나누어 지지 않는다. 즉, 2 ~ n-1 까지 나누려고 해도 나누어지지 않는 수이다. 1000이하의 소수 구하기 n이 소수인지를 검사하기 위한 for문 하나. 1과 본인의 값(1000)을 제외한 값으로 나눠주기 위해 모든 수를 차례로 스캔하는 for문 하나 안쪽 for 문에서 하나라도 나눠지는 수가 있다면 반복문을 중단하고 다음 수로 넘어간다. 나눠지는 수가 하나도 없다고 하면 마지막에는 결국 스캔한 값이랑 같아지게 되므로 i == j 조건을 추가 하여 출력해준다. 이 조건문은 안쪽 for문을 나왔을 때도 검사가 가능해야 하므로 for문의 초기화를 위한 선언은 for문 밖에서 정의 해준다. 위의 소수구하는 식의 문제점 1.n이 2또는 3으로 나누어 떨..

알고리즘 2021.09.30

[알고리즘] 배열 요소 정렬 / 함수형식 매크로

배열요소 정렬 정수/정수 연산은 나머지를 버리고 정수부만 얻을 수 있다. 나머지 버리기에 매우 좋다. 배열요소의 앞뒤를 바꾸기와 순차적으로 정렬할 경우 같은 자료형의 새로운 변수를 사용하여 재배열 해준다. 가장 왼쪽 요소의 인덱스는 i 가장 오른쪽 요소의 인덱스는 n -1 -i 위그림 처럼 두값을 교환하는 과정을 함수형식 매크로로 구현하면 프로그램이 짧아지고 읽기도 쉬워진다. #define swap(type, x ,y) do{type t = x; x =y; y = t;} while(0) #define SQR(X) ((X)*(X)) 매크로 함수의 장단점 매크로 함수의 장점은 다음과 같습니다. 1. 매크로 함수는 단순 치환만을 해주므로, 인수의 타입을 신경 쓰지 않습니다. 2. 매크로 함수를 사용하면 여러 ..

알고리즘 2021.09.29

[알고리즘] 배열2

선언과 정의 선언 : 컴파일러에게 대상에 대한 정보만을 알려주어 메모리가 아직 할당되지 않는다. 정의 : 컴파일러에게 대상의 실제 내용을 생성하게 한다. 실제 내용을 생성하고 할당한다. 메모리 구조 데이터 영역: 프로그램 시작하면 할당하고 프로그램이 종료하면 메모리 해제 (전역변수, 정적변수) 스택 영역: 함수 호출시 생성되고 함수호출이 완료되면 사라짐 (지역변수, 매개변수) 힙영역 : 필요에 따라 동적메모리를 할당->프로그램이 실행되는 동안 (런타임 시점)결정해야하는 경우 최댓값 구하기 주사 : 아래처럼 배열의 요소를 하나씩 차례로 살펴보는 과정을 알고리즘 용어로 주사 라고한다. 즉, 스캐닝 한다는 말과 같다. 상수사용 최소화하기 위해 전역변수로 배열 사이즈를 선언하였다. 그냥 int N = 5라고 했..

알고리즘 2021.09.29