http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=216&sca=10c0
선택 정렬 사용해서 풀기,
가장 작은 값을 찾아서, 제일 오른쪽 끝으로 옮기는 방식으로 해결
#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 자가진단 1
*/
void f(int a[], int n){ //int *b
//내림차순
int min;
for(int i=0;i<n;i++)
{
min = 99;
int min_idx = 0;
for(int j=0;j<n-i;j++){
if(min>a[j]){
min=a[j];
min_idx = j;
}
}
int temp= a[min_idx];
a[min_idx] = a[n-i-1];
a[n-i-1] = temp;
}
}
int main()
{
int a[10];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
f(a, n); //배열의 이름은 배열의 시작 주소다.ㅁ
for(int i=0;i<n;i++){
printf("%d ", a[i]);
}
return 0;
}
위 코드에서 swap() 함수를 사용한 것으로 개선
https://en.cppreference.com/w/cpp/algorithm/swap
#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 자가진단1
*/
void f(int a[], int n){ //int *b
//내림차순
int min;
for(int i=0;i<n;i++)
{
min = 99;
int min_idx = 0;
for(int j=0;j<n-i;j++){
if(min>a[j]){
min=a[j];
min_idx = j;
}
}
/*
int temp= a[min_idx];
a[min_idx] = a[n-i-1];
a[n-i-1] = temp;
*/
swap(a[min_idx], a[n-i-1]);
}
}
int main()
{
int a[10];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
f(a, n); //배열의 이름은 배열의 시작 주소다.ㅁ
for(int i=0;i<n;i++){
printf("%d ", a[i]);
}
return 0;
}
선택 정렬 사용해서 풀기 2,
가장 큰 값을 찾아서, 제일 왼쪽 끝으로 옮기는 방식으로 해결
#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 자가진단1
*/
void f(int a[], int n){ //int *b
//내림차순
int max;
for(int i=0;i<n;i++)
{
max = -1000;
int max_idx = 0;
for(int j=i;j<n;j++){
if(max<a[j]){
max=a[j];
max_idx = j;
}
}
/*
int temp= a[min_idx];
a[min_idx] = a[n-i-1];
a[n-i-1] = temp;
*/
swap(a[max_idx], a[i]);
}
}
int main()
{
int a[10];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
f(a, n); //배열의 이름은 배열의 시작 주소다.ㅁ
for(int i=0;i<n;i++){
printf("%d ", a[i]);
}
return 0;
}
'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글
231 : 함수3 - 형성평가1 (0) | 2020.02.16 |
---|---|
232 : 함수3 - 형성평가2 (0) | 2020.02.16 |
174 : 함수1 - 형성평가5 (0) | 2020.02.16 |
173 : 함수1 - 형성평가4 (0) | 2020.02.16 |
172 : 함수1 - 형성평가3 (0) | 2020.02.16 |