코드
//1146 : 선택정렬
#include<iostream>
using namespace std;
void insert(int* arr,int num);
void select_sort(int* arr,int num);
void print(int* arr, int num);
int main()
{
//수열의 길이를 받아들이는 변수 선언 및 값 입력
int num = 0;
cin >> num;
//배열 동적 할당
int* arr = new int[num];
//입력 값이 4보다 작거나 100보다 크면 종료
if (num < 4 || num>100) return 0;
//수열 값을 입력 받는 함수
insert(arr,num);
//선택 정렬
select_sort(arr, num);
//동적할당 해제
delete[] arr;
}
//수열 값을 입력받는 함수
void insert(int* arr, int num)
{
for (int i = 0; i < num; i++)
{
cin >> arr[i];
}
}
//선택 정렬
void select_sort(int* arr,int num)
{
//변수 선언
int taget = 0; //수열 중 작은 값의 배열 원소를 저장하는 변수 선언
int temp = 0; //swap을 할 때 사용할 temp 변수 선언
for (int i = 0; i < num-1; i++) //num-1 번 확인하므로 num-1 까지
{
taget = i; //taget 값을 i 값으로 초기화
for (int j = i+1; j < num; j++) //값을 비교하므로 i 값의 다음 값인 i+1값을 j로 시작
{
if (arr[taget] > arr[j]) //taget 값이 크면
{
taget = j; //j값을 taget에 넣어준다. 그 후 다시 비교
}
}
//taget 값과 i 값을 swap
temp = arr[taget]; //temp 값에 taget 값을 넣rh
arr[taget] = arr[i]; //taget 값에 i 값을 넣고
arr[i] = temp; //i 값에 다시 temp 값을 넣어 준다
//출력 함수
print(arr, num);
}
}
//출력 함수
void print(int* arr, int num)
{
for (int i = 0; i < num; i++)
{
cout << arr[i] << " ";
}
cout << '\n';
}
문제 출처 : http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=426&sca=2060
'자료구조, 알고리즘 문제 풀이 > 정올 실력키우기' 카테고리의 다른 글
정올 실력키우기 1157 : 버블정렬 (0) | 2017.04.11 |
---|---|
정올 실력 키우기 1158 : 삽입정렬 (0) | 2017.04.11 |
정올 실력키우기 문자열 1102 : 스택 (stack) (0) | 2017.03.26 |
정올 실력키우기 문자열 2604 : 그릇 (0) | 2017.03.23 |
1304: 숫자사각형3 (0) | 2015.08.04 |