2013. 5. 27. 11:38ㆍ프로그래밍/C/C++
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 10
//배열의 모든 값을 출력하는 함수
void Print(int x[], int size)
{
int i;
for(i=0 ; i<size ; i++)
{
printf("%d\n", x[i]);
}
printf("\n");
}
//선택정렬
SelectionSort(int x[], int size)
{
int k, i, temp, sel;
//size-1만큼 반복한다.
for(i=0 ; i<size-1 ; i++)
{
//첫번째 인덱스를 선택
sel = i;
//선택된 인덱스의 다음 인덱스부터 끝까지 값을 비교한다.
for(k=i+1 ; k<size ; k++)
{
//현재 인덱스의 배열 값보다 작은 값이 있다면 그 값을 선택한다.
if(x[k] < x[sel])
sel = k;
}
//연산이 시작된 첫번재 배열에 작은 값을 대입한다.
if(sel != i)
{
temp = x[sel];
x[sel] = x[i];
x[i] = temp;
}
}
}
//버블정렬
BubbleSort(int x[], int size)
{
int i, k, temp;
//size-1만큼 반복
for(i=0 ; i<size-1 ; i++)
{
//뒤에서부터 두개식 비교(이미 정렬된 값은 비교 하지 않음)
for(k=size-1 ; k>i ; k--)
{
//두개씩 비교하여 작은 값을 앞으로 보낸다.
if(x[k-1] > x[k])
{
temp = x[k-1];
x[k-1] = x[k];
x[k] = temp;
}
}
}
}
//삽입정렬
void InsertSort(int x[], int size)
{
int i, k, temp;
for(i=1 ; i<size ; i++)
{
temp = x[i];
for(k=i-1 ; k>=0 ; k--)
{
if(temp < x[k])
{
x[k+1] = x[k];
}
else
{
break;
}
}
x[k+1] = temp;
}
}
int main()
{
//배열과 변수를 생성
int data[SIZE];
int i;
//랜덤시드값을 준다.
srand((unsigned)time(0));
//배열의 각요소에 랜덤값을 부여한다.
for(i=0 ; i<SIZE ; i++)
{
data[i] = rand();
}
//원래 값 출력
Print(data, SIZE);
//선택정렬
SelectionSort(data, SIZE);
//정렬된 값 출력
Print(data, SIZE);
BubbleSort(data, SIZE);
//정렬된 값 출력
Print(data, SIZE);
return 0;
}
//삽입정렬 과정을 지켜보는 코드
//SIZE는 5로 두고 과정을 지켜본다.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 5
//배열의 모든 값을 출력하는 함수
void Print(int x[], int size)
{
int i;
for(i=0 ; i<size ; i++)
{
printf("%d ", x[i]);
}
printf("\n");
}
//삽입정렬
void InsertSort(int x[], int size)
{
int i, k, temp;
printf(" 처음 배열 : ");
Print(x, size);
for(i=1 ; i<size ; i++)
{
printf("i : %d********************\n", i);
temp = x[i];
for(k=i-1 ; k>=0 ; k--)
{
printf(" k : %d************\n", k);
if(temp < x[k])
{
printf(" temp : %d\n", temp);
printf(" x[k] : %d\n", x[k]);
printf(" x[k+1] : %d\n", x[k+1]);
x[k+1] = x[k];
}
else
{
printf(" break\n");
break;
}
}
x[k+1] = temp;
printf(" 바뀐 배열 : ");
Print(x, size);
printf("\n");
}
}
int main()
{
//배열과 변수를 생성
int data[SIZE];
int i;
//랜덤시드값을 준다.
srand((unsigned)time(0));
//배열의 각요소에 랜덤값을 부여한다.
for(i=0 ; i<SIZE ; i++)
{
data[i] = rand()%100;
}
//삽입정렬
InsertSort(data, SIZE);
return 0;
}
'프로그래밍 > C/C++' 카테고리의 다른 글
[논리적 사유연습]재귀함수를 이용한 숫자 역순으로 출력 / Factorial 구하기 (0) | 2013.06.03 |
---|---|
[논리적 사유연습]구조체 (0) | 2013.06.03 |
[논리적 사유연습]홀수 마방진구하기 (0) | 2013.05.15 |
[논리적 사유연습]윷을 던졌을 때의 확률 구하기 (0) | 2013.05.13 |
[논리적 사유연습]PuzzleStrike(숫자야구게임) (0) | 2013.05.08 |