TCP는 신뢰성 있는 데이터 전송을 필요로 하기 때문에 통신이 정상적으로 이루어질 수 있는지 확인하는 과정이 필요하다. 이것을 3 way handshake 라고 한다.

 

3-way handshake

 

 

4-way handshake

'CS > 네트워크' 카테고리의 다른 글

스위칭의 필요성, 스위칭 방법의 종류  (0) 2020.06.06

# Selection Sort
# 앞에서부터 원소를 하나씩 선택한 후, 그 뒷부분에서 최솟값을 찾아 그 둘을 swap하는방식으로 정렬하는 방식
# 시간복잡도: O(N^2) <- N(N-1)/2
# 공간복잡도: n
# 장점: 비교횟수는 많지만 bubble sort에 비해 자리를 교환하는 횟수가 적어 많은 교환이 일어나야 할 때(정렬이 많이 이루어져야 할 때) 효율적
# 추가 메모리를 필요로 하지 않는다(in-place). 
# 단점: unstable하다.

 

Python

def selection_sort(lst):
    for i in range(len(lst)-1):  # i = 정렬할 자리. 맨 마지막은 안 봐도 됨
        min_idx = i  # min_idx 은 i와 swap할 원소
        for j in range(i+1, len(lst)):
            if lst[min_idx] > lst[j]:
                min_idx = j
        lst[i], lst[min_idx] = lst[min_idx], lst[i]  # i 자리에 min_idx의 원소를 넣고 swap
    return lst

arr = [3, 9, 3, 1, 5]  # unstable의 예
print(selection_sort(arr))

 

Javascript

function selection_sort(arr) {
    for (let i=0; i<arr.length-1; i++) {
        let min_idx = i;
        for (let j=i+1; j<arr.length; j++) {
            if (arr[min_idx] > arr[j]) min_idx = j;
        }
        let tmp = arr[i];
        arr[i] = arr[min_idx];
        arr[min_idx] = tmp;
    }
    
    return arr;
}

'CS > 알고리즘' 카테고리의 다른 글

Insertion Sort in Python (삽입 정렬)  (0) 2020.06.09
크루스칼 알고리즘 (Python)  (0) 2020.05.07
프림 알고리즘 (Python)  (0) 2020.05.07
Call by Value vs Call by Reference  (0) 2020.04.28
Bubble Sort (버블 정렬)  (0) 2020.04.24
def bubble(lst):
    for i in range(len(lst)-1):
        if lst[i] > lst[i+1]:
            lst[i], lst[i+1] = lst[i+1], lst[i]
	

a = [3, 1, 5, 9, 7, 10]
bubble(a)
print(a)
	

# Bubble Sort
# 서로 인접한 두 원소의 대소를 비교해가면서 자리를 교환해 정렬하는 방식
# 시간복잡도: O(n^2)
# 공간복잡도: n
# 장점: 구현이 쉽다. memory가 추가로 들지 않는다(in-place). 중복된 값들이 있을 경우 원래 순서를 보장한다(stable).
# 단점: 정렬이 되어 있건 안 되어 있건 무조건 비교 연산을 수행하기 때문에 수행시간이 무조건 n^2이다.

'CS > 알고리즘' 카테고리의 다른 글

Insertion Sort in Python (삽입 정렬)  (0) 2020.06.09
크루스칼 알고리즘 (Python)  (0) 2020.05.07
프림 알고리즘 (Python)  (0) 2020.05.07
Call by Value vs Call by Reference  (0) 2020.04.28
Selection Sort (선택 정렬)  (0) 2020.04.24

+ Recent posts