#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int i;
int min;
int in[10] = { 7,2,9,0,1,4,6,8,3,5 };
printf("Array: ");
for (i = 0; i < 10; i++)
printf("%2d", in[i]);
printf("\n");
min = in[0];
for (i = 0; i < 10; i++) {
if (in[i] < min) {
min = in[i];
}
}
printf("최소값 : %d \n", min);
}
1.최소값 찾기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int i;
int min;
int minpos;
int in[10] = { 7,2,9,0,1,4,6,8,3,5 };
int temp;
printf("Array: ");
for (i = 0; i < 10; i++)
printf("%2d", in[i]);
printf("\n");
min = in[0];
for (i = 0; i < 10; i++) {
if (in[i] < min) {
min = in[i];
}
}
printf("최소값 : %d \n", min);
minpos = 0;
for (i = 0; i < 10; i++)
{
if (in[i] < in[minpos]) {
minpos = i;
}
}
printf("minpos:: %d\n", minpos);
}
2.최소값의 index 위치 찾기 minpos
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int i;
int min;
int minpos;
int in[10] = { 7,2,9,0,1,4,6,8,3,5 };
int temp;
printf("Array: ");
for (i = 0; i < 10; i++)
printf("%2d", in[i]);
printf("\n");
min = in[0];
for (i = 0; i < 10; i++) {
if (in[i] < min) {
min = in[i];
}
}
printf("최소값 : %d \n", min);
minpos = 0;
for (i = 0; i < 10; i++)
{
if (in[i] < in[minpos]) {
minpos = i;
}
}
printf("minpos : %d\n", minpos);
temp = in[0];
in[0] = in[minpos];
in[minpos] = temp;
printf("After: ");
for (i = 0; i < 10; i++)
printf("%2d", in[i]);
printf("\n");
return 0;
}
3.최소값을 찾아 처음과 교환하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int i,j;
int min;
int minpos;
int in[10] = { 7,2,9,0,1,4,6,8,3,5 };
int temp;
printf("Array: ");
for (i = 0; i < 10; i++)
printf("%2d", in[i]);
printf("\n");
min = in[0];
for (i = 0; i < 10; i++) {
if (in[i] < min) {
min = in[i];
}
}
printf("최소값 : %d \n", min);
minpos = 0;
for (i = 0; i < 10; i++)
{
if (in[i] < in[minpos]) {
minpos = i;
}
}
printf("minpos : %d\n", minpos);
temp = in[0];
in[0] = in[minpos];
in[minpos] = temp;
// Selection sort algorithm
for (i = 0; i < 10 - 1; i++) {
// Assume the minimum is the first element
minpos = i;
// Find the index of the minimum element in the unsorted part
for (j = i + 1; j < 10; j++) {
if (in[j] < in[minpos]) {
minpos = j;
}
}
// Swap the found minimum element with the first element
if (minpos != i) {
temp = in[i];
in[i] = in[minpos];
in[minpos] = temp;
}
}
printf("After: ");
for (i = 0; i < 10; i++)
printf("%2d", in[i]);
printf("\n");
return 0;
}
4.선택정렬 알고리즘을 사용하여 오름차순 배열정렬(중요)
//선택정렬 알고리즘 외우기
for (i = 0; i < 10 - 1; i++) {
// 첫 원소를 최소인덱스 원소로 두기
minpos = i;
// Find the index of the minimum element in the unsorted part
for (j = i + 1; j < 10; j++) {
if (in[j] < in[minpos]) {
minpos = j;
}
}
// 최소값원소를 첫번째 원소와 교환하기
if (minpos != i) {
temp = in[i];
in[i] = in[minpos];
in[minpos] = temp;
}
}
선택정렬 알고리즘 외우기
첫 번째 값과 다른 값들을 비교하여 가장 작은 값과 교환
같은 방법으로 두 번째 값과 그 이후 값 중에서 가장 작은 값과 교환
기준 값을 뒤로 이동하면서 반복
'DSA' 카테고리의 다른 글
포인터 연습 예제3 (참조에 의한 호출, call-by-reference)(함수에서 2개 이상의 값 동시 반환) (1) | 2024.06.04 |
---|---|
소수 찾기 함수 (0) | 2024.05.26 |
배열 최대값 찾기 (0) | 2024.05.25 |
정렬 알고리즘 (8) | 2024.02.27 |
피보나치 수열 (반복구조), (순환구조) (0) | 2024.02.15 |