코드

 

//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

+ Recent posts