본문 바로가기

cpp59

20210119(화) 선택 정렬(Selection Sort) ▼ 이론 for(i = n; i > 1; i--) max = 0; for(j = 1; j 1; i--) { int max = 0; for (i.. 2021. 1. 19.
16. 사용자 정의 자료형 C언어는 기본적으로 최소한의 자료형만을 지원한다. 이는 C언어의 특징 중 하나인 가벼움을 유지하기 위한 고육지책이다. 우리가 살아가는 이 세상에는 수많은 데이터가 있고 그 데이터마다 또 구조가 다 다르다. 이런 경우의 수를 모두 변수형으로 만들어두면 C언어의 크기가 한계 없이 커질 것이 분명했다. 대신 C에서는 기본 자료형을 확장해서 사용자 정의 자료형을 만들 수 있게 하였다. CPP 역시 C 언어를 계승하면서 이 기능을 가져왔다. (약간의 수정은 되었다.) 구조체(Structure) 구조체(Structure)라는 단어만으로 어떤 일을 하는 건지 쉽게 한 번에 이해되지 않을 것이다. 우리나라의 말로 번역되면서 조금(많이) 압축 된 느낌이 있다. ▼ 영어가 가지는 뜻을 생각해보면 쉽다. 한정된 공간에 정해.. 2021. 1. 19.
5. 삽입 정렬(Insertion Sort) 삽입 정렬의 개념 차례로 하나씩 꺼내서 앞에 있는 값들과 크기를 비교한 뒤 바꿔서 삽입한다고 해서 삽입 정렬이라 부른다. ▼ 삽입 정렬 알고리즘 도식화 그림을 보면 교환이라기 보다는 옆으로 꺼내두는 모습을 볼 수 있는데 삽입 정렬의 구현 방법은 이동(Shift) 방식과 교환(Swap) 방식 둘 다 가능하다. 삽입 정렬의 성능[O(n²)] 정렬할 자료의 수의 제곱에 비례하여 늘어난다. 삽입 정렬은 범위를 늘려가면서 비교하는 방식 때문에 배열이 길어지면 길어질 수록 효율이 떨어진다. 반대로 말하면 배열이 짧으면 짧을수록 속도가 빠르다. 고성능 정렬 라이브러리에서는 데이터의 양이 적을 때엔 삽입 정렬로 전환하여 속도를 올리기도 한다. C99 ▼ 관련 개념 Condition & Loop & Pointer & C.. 2021. 1. 18.
4. 선택 정렬(Selection Sort) 선택 정렬의 개념 한 위치씩 선택해서 순차적으로 작은 값들을 찾아서 선택 정렬이라고 한다. ▼ 선택 정렬 알고리즘 도식화 선택 정렬은 최소값을 찾은 다음 교환하기 때문에 교환 함수 호출을 최소화할 수 있다. 선택 정렬의 성능[O(n²)] 정렬할 자료의 수의 제곱에 비례하여 늘어난다. C99 ▼ 관련 개념 Loop & Pointer & Call By Address ▼ 구현 코드 int Compare(int lhs, int rhs) { return (lhs - rhs); } void Swap(int* lhs, int* rhs) { int _temp = *lhs; *lhs = *rhs; *rhs = _temp; } void SelectionSort(int arr[], int length) { int min; .. 2021. 1. 18.