Professional Documents
Culture Documents
Day 08
Day 08
체이닝(Chaining)
각 해시값의 공간에 연결리스트를 할당하여 데이터 삽입시 충돌이 발생하면
그 연결리스트에 데이터를 연결하여 삽입하는 방식이다.
같은 해시값을 갖는 데이터가 계속 추가된다면 한 리스트에만 데이터가
추가되므로 해싱기법을 쓴 것이 무의미해진다
정렬 알고리즘
데이터를 순서대로 나열하기 위한 절차적 과정, 알고리즘
선택, 삽입, 버블, 퀵, . . .
선택 정렬(selection sort)
꼭 알아야한다* 정렬만큼은
장점: 구현이 쉽다
단점: 다른 정렬에 비해 시간이 오래걸린다.
기본로직
1. 정렬되지 않은 인덱스의 맨 앞에서부터 이를 포함한
그 이후의 값들 중에 최소값을 찾아낸다.
4 [1] 3 5 2
\
2. 최소값을 찾았다면 그 값을 현재 인덱스의 값과 바꾸어준다.
1 4 3 5 2
\
3. 다음 인덱스로 이동하여 위의 과정을 반복한다.
1 4 3 5 2
\
버블 정렬(Bubble Sort)
인접한 두 수를 비교하여 큰 수를 뒤로 보내는 작업을
반복하여 정렬하는 방법
기본로직
1. 맨 앞에서부터 바로 뒤에 있는 값과 비교 후
순서가 거꾸로 되어있다면 둘의 위치를 바꾼다.
4 1 3 5 2
↑
1 4 3 5 2
↑
1 3 4 5 2
↑
1 3 4 5 2
↑
1 3 4 2 5
↑
삽입 정렬(Insertion Sort)
현재 위치에서 그 앞의 인덱스들 중에 자신이 들어갈 위치를 찾아서
그 위치에 삽입하여 정렬하는 방법
기본 로직
1. 현재 인덱스(i)의 값을 임시 저장한다.
↓
4 1 3 5 2
↑ 1
//앞에꺼 비교해서 앞에 적어도하나는있어야해
2. 그 앞의 값들을 거꾸로 비교하면서 값이 더큰게 있다면
바로 뒷자리에 덮어 씌워준다.
↓
4 1 3 5 2 -> 4 4 3 5 2
↑ ↑
3. 작은 값을 찾는 순간 그 위치 +1 에 임시 저장했던 temp 를
덮어 씌워준다. 못찾은 경우 idx 는 -1 이 기본값이기 때문에 0 번방에
덮어씌우기가 진행된다.
↓
1 4 3 5 2
↑ 1
퀵 정렬(quick sort)
분할정복 방식으로 정렬을 수행하는 방법
기본로직
1. 배열 안에서 가장 오른쪽 요소를 pivot 으로 선택
idx 는 -1 로 초기화