본문 바로가기

<ALGORITHM>/SUMMARIZE7

2. 순차 정렬(Sequential Sort) 순차 정렬의 개념 한 자리씩 순차적으로 정렬한다고 해서 순차 정렬이라 부른다. ▼ 순차 정렬 알고리즘 도식화 그림에서처럼 현재 위치와 그 뒤의 값들과 비교하면서 가장 작은 값(혹은 큰 값)으로 교환한다. 내부 순환문이 한번 다 돌면 그 위치는 최솟값 혹은 최댓값이 확정되기 때문에 다음 위치에서 다시 반복하는 것이 알고리즘의 핵심이다. 순차 정렬의 성능[O(n²)] 정렬할 자료의 수의 제곱에 비례하여 늘어난다. 단순 무식한 방법인 만큼 순차 정렬은 거의 모든 경우에서 최악의 성능을 보여준다. 하지만 역시나 정렬이 이미 완료된 경우엔 최선의 성능을 보인다. 데이터에 따라 다르긴 하지만 순차 정렬은 실무에서는 거의 쓰이지 않는다고 한다. C99 ▼ 관련 개념 Loop & Pointer & Call By Add.. 2021. 1. 18.
1. 역순(Reverse) 역순(Reverse)의 개념 역순(Reverse)은 앞에서 n번째 값과 뒤에서 n번째 값을 차례로 교환한다. 두 값을 교환하기 때문에 배열 길이의 절반의 순환문만 돌면 된다. 만약 배열 길이만큼 돈다면 역순의 역순이라 다시 본래의 순서대로 된다. ▼앞에서 n번째와 뒤에서 n번째를 교환한다. C99 ▼ 관련 개념 Loop & Pointer & Call By Address ▼ 구현 코드 void Swap(int* lhs, int* rhs) { int _temp = *lhs; *lhs = *rhs; *rhs = _temp; } void Reverse(int iArr[], int length) { for (int i = 0; i < (length / 2); i++) { Swap(&iArr[i], &iArr[le.. 2021. 1. 17.
0. 교환함수(Swap) 포인터 방식 C99 ▼ 관련 개념 Pointer & Call By Address ▼ 구현 코드 void Swap(int* lhs, int* rhs) { int _temp = *lhs; *lhs = *rhs; *rhs = _temp; } ▼ 사용 예시 Swap(&lhs, &rhs); 포인터(*)를 이용한 방법이다. 포인터는 C 표준에서는 함수 인자에 직접적으로 접근할 수 있는 유일한 방법이다. CPP B.11 ▼ 관련 개념 Reference & Call By Reference ▼ 구현 코드 void Swap(int& lhs, int& rhs) { int temp = lhs; lhs = rhs; rhs = lhs; } ▼ 사용 예시 Swap(lhs, rhs); 참조자(&)를 이용한 방법이다. CPP에서 추가.. 2021. 1. 17.