선택정렬(Selection sort), 이진탐색(Binary Search) 알고리즘 자료구조
- 최초 등록일
- 2021.05.14
- 최종 저작일
- 2021.04
- 15페이지/ 한컴오피스
- 가격 1,000원
목차
1. 목표
2. 문제풀이
3. 느낀점
본문내용
요즘은 알고리즘이라는 단어를 어디에서나 쉽게 접할 수 있다.
아주 대표적인 예를 들자면 현대 사회에서의 필수 애플리케이션인 유튜브에서 이용자가 어떤 동영상을 보았는지, 어떤 유튜버를 많이 보았는지 등을 요약 추출하여 이러한 것을 토대로 다시 이용자에게 평소 즐겨보던 영상과 아주 유사한 동영상 등을 추천해준다.
또한, IT 회사들은 위와 같은 알고리즘을 통한 코딩테스트로 입사 시험을 치른다.
사회 전반에 널리 알려진 이러한 알고리즘이 도대체 무엇인지에 대해 생각을 해보며, 알고리즘 구조의 아주 기본적인 선택정렬과 이진탐색 알고리즘을 공부해보자.
02. 문제풀이
1) 선택정렬(Selection sort) → rand()를 사용
선택정렬의 목적
- 정렬되지 않은 정수들중에서 가장 작은 값을 찾아서 정렬된 리스트 다음 자리에 놓는다.
선택정렬을 하는 프로그램을 만들려면 기본적으로 선택정렬에서 쓰일 알고리즘과 swap 변수가 필요하다.
사용할 알고리즘
이러한 구조의 선택정렬 알고리즘을 사용할 것이다.
위는 단순히 예시이며 이것을 토대로 우리는 두 가지의 작업을 수행해야 한다는 것을 알 수 있다.
1. 최소 정수를 찾는 작업 2. list[i] 값을 교환하는 작업
그렇다면 해당 문제를 해결하기 위하여 두 가지의 함수에 대해서 알아보자.
결과값
우리가 원하던 선택정렬은 잘 이루어졌지만, rand 함수를 사용하여 난수를 주었던 것이 같은 숫자가 또 나오는데 보였다. 이것을 srand를 사용하여 매번 다른 숫자가 나오게 해보자.
1) 선택정렬(Selection sort) → srand()를 사용
rand 와 똑같은 함수를 사용하며 다른 점은 srand(time(NULL))이 사용된다는 것이다.
srand는 리턴 타입이 없으며 전달인자로 주는 unsigned int의 값을 seed라고 부른다. 이러한 seed 값이 변경될 때따마 다른 값이 나온다. 하지만 seed값을 일일이 다 바꿔줄 수 없으므로 우리는 time.h 라이브러리의 time 함수를 사용하도록 하자.
참고 자료
없음