본문 바로가기
TIL(Daily)

Wed/21/Sep/22-자료구조&알고리즘

by Hawie 2022. 9. 21.

오늘배운 내용

정렬,스택,큐,해쉬 등 이 있다.

 

먼저 정렬이란?

 

정렬이란 데이터를 순서대로 나열하는 방법을 의미한다.

정렬은 알고리즘의 굉장히 중요한 주제이다.

이진 탐색을 가능하게도 하고, 데이터를 조금 더 효율적으로 탐색할 수 있게 만들기 때문이다.

 

일단 가장 쉽고 직관적인 버블 정렬 먼저 알아보자.

버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하는 방식이다!

작은 숫자, 큰 숫자 순서로 있으면 내버려두고 큰 숫자, 작은 숫자 순서로 있으면 둘의 위치를 변경하면 된다.

 

두번째 선택 정렬

 

이름에서 알 수 있듯이 선택해서 정렬한다 라고 생각하면 된다..

다음과 같이 사람들이 일렬로 서 있는데, 한번  둘러보면서 가장 키 작은 사람을 찾는방법이다.

그리고 전부 다 봤다면, 그 중 가장 키 작은 사람 맨 앞으로 부른 후  다음에 또 둘러보면서 두 번째로 키 작은 사람을 두 번째에 배치 시키는

방식이다.

 

세번째 삽입 정렬

 

이번에는 선택 정렬과 다른 느낌이 이다. 선택 정렬이 전체에서 최솟값을 "선택" 하는 거 였다면,

삽입 정렬은 전체에서 하나씩 올바른 위치에 "삽입" 하는 방식이다.

선택 정렬은 현재 데이터의 상태와 상관없이 항상 비교하고 위치를 바꾸지만,

삽입 정렬은 필요할 때만 위치를 변경하므로 더 효율적인 방식이다.

이미 키 순으로 정렬된 사람들이 일렬로 나란히 있는데,

다음 원소가 그 정렬된 사람들 사이를 비집고 들어가면서  여기가 내 자리다 ,하면서 삽입하며 정렬하는 방식입니다.

 

네번째 병합 정렬

 

병합 정렬은 배열의 앞부분과 뒷부분의 두 그룹으로 나누어 각각 정렬한 후 병합하는 작업을 반복하는 알고리즘이다.

예를 들어서 A 라고 하는 배열이 1, 2, 3, 5 로 정렬되어 있고, B 라고 하는 배열이 4, 6, 7, 8 로 정렬되어 있다면 이 두 집합을 합쳐가면서 정렬하는 방법이다.

 

 

오늘 배운 내용은 솔직히 어려운 개념이다. 그래서 하루만에 이걸 이해 한다는건 나한테 무리다.

그래서 오늘은 이런 개념들이 있다 는 생각으로 듣고

Python 기초문법 복습 과 Django수업 예습 형식으로  공부 한 하루였다.

내일 부터 본격 적인  Django 수업인데, 예습형식으로 공부 해보았는데 재미있었다.

처음 배워서 그런건지 몇 주 동안 배웠던게 어려워서 다른걸 시작해서 재미있는지는

앞으로 더 지켜보아야 될 것 같다.

 

 

 

댓글