단, 입력 받은 숫자가 홀수이면 배열의 앞에서부터 채워나가고, 짝수이면 뒤에서부터 채워나가는 형식을 취하기로 하자.
따라서 사용자가 [1,2,3,4,5,6,7,8,9,10]을 입력했다면,
배열에는 [1,3,5,7,9,10,8,6,4,2]의 순으로 저장이 되어야 한다.
#include <stdio.h>
/*
도전 프로그래밍2 - 열혈C 329pg
*/
int main()
{
int arr[10];
int i;
int result[10] = { 0, };
//10개 입력받기
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
//홀수는 result의 앞 부터 저장
for (i = 0; i < 10; i++)
{
if (arr[i] % 2 == 1)
{
result[i] = arr[i];
printf("%d ", result[i]);
}
}
//짝수는 result의 뒤 부터 저장
for (i = 9; i >=0; i--)
{
if (arr[i] % 2 == 0)
{
result[i] = arr[i];
printf("%d ", result[i]);
}
}
return 0;
}
#include <stdio.h>
void SelecSort(int *arr, int num)
{
int i, j;
int min;
int temp;
for (i = 0; i < num - 1; i++)
{
//i번째 단계: i번째 원소를 기준으로 n-1개의 원소를 비교하기 시작
min = i;
for (j = i + 1; j < num; j++) //기준원소부터 시작해 끝원소까지 중에 최소값 찾기
{
if (arr[j] < arr[min])
{
min = j;
}
}
//SWAP
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
int main()
{
int arr[7] = { 9, 4, 8, 12, 2, 5, 1 };
int i;
SelecSort(arr, sizeof(arr) / sizeof(int));
printf("정렬 후: ");
for (i = 0; i < sizeof(arr)/sizeof(int); i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
다른 방법으로 구현해봤다.
#include <stdio.h>
void SelectionSort(int *arr, int len)
{
int i, j, temp;
for (i = 0; i < len-1; i++)
{
printf("i: %d \n", i);
for (j = i + 1; j < len; j++)
{
if (arr[i]>arr[j])
{
printf("Smallest:%d --> SWAP\n", arr[j]);
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
for (int a = 0; a < len; a++)
{
printf("%d ", arr[a]);
}
printf("\n\n");
}
}
int main()
{
int arr[] = { 5, 1, 2, 8, 26, 14 };
int len = sizeof(arr) / sizeof(int);
SelectionSort(arr, len);
/*
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
*/
return 0;
}