sort
- 최초 등록일
- 2011.12.18
- 최종 저작일
- 2011.11
- 5페이지/ 한컴오피스
- 가격 1,000원
* 본 문서는 한글 2005 이상 버전에서 작성된 문서입니다.
한글 2002 이하 프로그램에서는 열어볼 수 없으니, 한글 뷰어프로그램(한글 2005 이상)을 설치하신 후 확인해주시기 바랍니다.
소개글
완벽한 소스 프로그램입니다
목차
■ 문제인식
■ 문제접근 방법 및 분석
■ 소스코드 및 주석
■ 결과화면
■ 느낀점
본문내용
■ 문제인식
정수를 입력받아 sort를 한 다음, 이진탐색으로 원하는 숫자의 위치를 찾는 프로그램을 작성하시오.
■ 문제접근 방법 및 분석
일정한 개수의 정수를 무작위로 입력받아 그 숫자를 오름차순으로 정렬할수 있어야 한다. 그런다음 일정한 숫자를 입력받아 그 숫자가 오름차순으로 정렬한 숫자에 포함이 되어있는지 여부를 판단하여 위치를 알려주어야 한다.
먼저 song[5]이라는 배열을 이용해 5개의 정수를 입력받는다. 입력받은 숫자중 맨 먼저 입력받은 song[0]의 숫자와 다음으로 입력받은 song[1]의 숫자를 비교하여 만일 song[1]의 숫자가 더 작다면 swap함수를 이용하여 song[1]과 song[0]의 숫자를 바꾸어 준다. 그런뒤 바뀐 song[0]의 숫자와 song[2]의 숫자를 비교한뒤 song[2]의 숫자가 더 작다면 마찬가지로 swap함수를 이용하여 숫자의 위치를 바꾸어 주고, 만일 song[2]의 숫자가 song[0]보다 더 크다면 바로 song[3]으로 넘어가서 song[0]과 song[3]의 숫자를 비교해주면 된다. 이런식으로 2개의 for문을 이용하여 song[5]라는 배열을 오름차순으로 정렬할수 있으며 정렬한 값을 출력하면 된다.
이렇게 정렬된 배열에서 특정한 숫자를 입력하여 그 숫자의 유무를 판단하고, 만약 있다면 배열에서의 위치를 알려주는게 이진탐색 프로그램이다. left는 탐색하고자 하는 리스트의 왼쪽 끝지점을 가리키고, right는 탐색하고자 하는 리스트의 오른쪽 끝지점을 가리킨다. 초기값으로 left=0, right=n-1로 하고 리스트의 중간위치 mid=(left + right) / 2로 설정한다. 만약 song[mid]와 찾고자 하는 숫자 x를 비교하였을 때, x < song[mid] 의 경우 x가 존재한다면 그것은 0과 mid-1사이에 있으므로 right는 mid-1로 설정하여야 하고, x==song[mid]일 경우는 mid를 반환하면 된다. x > song[mid]일 경우는 x가 존재한다면 mid+1과 n-1사이에 있으므로 left를 mid+1로 설정하면 된다.
참고 자료
없음