#include<stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
#define SWAP(x,y,t) ((t)=(x), (x)=(y), (y)=(t))
void selectionSort(int list[], int n)
{
int i, j, least, temp;
for (i = 0;i < n;i++) {
least = i;
for (j = i + 1; j < n;j++)
if (list[least] > list[j]) least = j;
SWAP(list[i], list[least], temp);
}
}
void print(int list[], int n)
{
int i;
for (i = 0;i < n;i++)
printf("%d ", list[i]);
printf("\n");
}
void main()
{
int i;
int a[MAX_SIZE] = { 1,3,4,9,7,6,5,8,2,10 };
printf("정렬 전: ");
print(a, 10);
selectionSort(a, 10);
printf("정렬 후: ");
print(a, 10);
int list[10];
for (i = 0;i < 10;i++)
list[i] = rand() % 100;
printf("정렬 전: ");
print(list, 10);
selectionSort(list, 10);
printf("정렬 후: ");
print(list, 10);
}
코드
#include<stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
#define SWAP(x,y,t) ((t)=(x), (x)=(y), (y)=(t))
void insertionSort(int list[], int n)
{
int i, j, key;
for (i = 1;i < n;i++) {
key = list[i];
for (j = i - 1;j >= 0 && list[j] > key;j--)
list[j + 1] = list[j];
list[j + 1] = key;
}
}
void print(int list[], int n)
{
int i;
for (i = 0;i < n;i++)
printf("%d ", list[i]);
printf("\n");
}
void main()
{
int i;
int a[6] = { 1,3,4,9,7,6 };
printf("정렬 전: ");
print(a, 6);
insertionSort(a,6);
printf("정렬 후: ");
print(a, 6);
int n = MAX_SIZE;
int list[MAX_SIZE];
for (i = 0;i < n;i++) {
list[i] = rand() % n + 1;
}
printf("정렬 전: ");
print(list, n);
insertionSort(list, n);
printf("정렬 후: ");
print(list, n);
}
코드
#include<stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
#define SWAP(x,y,t) ((t)=(x), (x)=(y), (y)=(t))
void bubbleSort(int list[], int n)
{
int i, j, temp;
for (i = n - 1;i > 0;i--) {
for (j = 0;j < i;j++)
if (list[j] > list[j + 1])
SWAP(list[j], list[j + 1], temp);
}
}
void print(int list[], int n)
{
int i;
for (i = 0;i < n;i++)
printf("%d ", list[i]);
printf("\n");
}
void main()
{
int i;
int a[6] = { 1,3,4,9,7,6 };
printf("정렬 전: ");
print(a, 6);
bubbleSort(a,6);
printf("정렬 후: ");
print(a, 6);
int n = MAX_SIZE;
int list[MAX_SIZE];
for (i = 0;i < n;i++) {
list[i] = rand() % n + 1;
}
printf("정렬 전: ");
print(list, n);
bubbleSort(list, n);
printf("정렬 후: ");
print(list, n);
}
코드
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
#define SWAP(x,y,t) ((t) =(x),(x)=(y),(y)=(t))
void inc_insertion_sort(int list[], int first, int last, int gap)
{
int i, j, key;
for (i = first + gap;i <= last;i = i + gap) {
key = list[i];
for (j = i - gap;j >= first && key < list[j];j = j - gap)
list[j + gap] = list[j];
list[j + gap] = key;
}
}
void shell_sort(int list[], int n)
{
int i, gap;
for (gap = n / 2;gap > 0;gap = gap / 2)
{
if ((gap % 2) == 0) gap++;
for (i = 0;i < gap;i++)
inc_insertion_sort(list, i, n - 1, gap);
}
}
void printList(int list[], int n)
{
int i;
for (i = 0;i < n;i++)
printf("%d ", list[i]);
printf("\n");
}
void main()
{
int i;
int a[6] = { 1,3,4,9,7,6 };
printf("정렬 전: ");
printList(a, 6);
shell_sort(a, 6);
printf("정렬 후: ");
for (i = 0;i < 6;i++)
printf("%d ", a[i]);
printf("\n");
int n = MAX_SIZE;
int list[MAX_SIZE];
for (i = 0;i < n;i++)
list[i] = rand() % n + 1;
printf("정렬 전: ");
printList(list, n);
shell_sort(list, n);
printf("정렬 후: ");
printList(list, n);
}
코드
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZES 20
//int sorted[MAX_SIZES];
void merge(int list[], int left, int mid, int right)
{
int i, j, k, l;
i = left; j = mid + 1; k = left;
//int *sorted=new int[right+1];
int* sorted = (int*)malloc(sizeof(int) * (right + 1));
/* 분할 정렬된 list의 합병 */
while (i <= mid && j <= right) {
if (list[i] <= list[j])
sorted[k++] = list[i++];
else
sorted[k++] = list[j++];
}
if (i > mid) /* 남아 있는 레코드의 일괄 복사 */
for (l = j; l <= right; l++)
sorted[k++] = list[l];
else /* 남아 있는 레코드의 일괄 복사 */
for (l = i; l <= mid; l++)
sorted[k++] = list[l];
/* 배열 sorted[]의 리스트를 배열 list[]로 재복사 */
for (l = left; l <= right; l++)
list[l] = sorted[l];
// delete []sorted;
free(sorted);
}
//
void mergeSort(int list[], int left, int right)
{
int mid;
if (left < right) {
mid = (left + right) / 2; /* 리스트의 균등 분할 */
mergeSort(list, left, mid); /* 부분 리스트 정렬 */
mergeSort(list, mid + 1, right); /* 부분 리스트 정렬 */
merge(list, left, mid, right); /* 합병 */ // 안나눠질때까지 나눈 후 merge함수 실행
}
}
void main()
{
int list[10] = { 6,56,3,2,47,4,5,12,23,10 };
// int list[MAX_SIZES];
int n = 10;
int i;
printf("정렬 전: \n");
for (i = 0;i < n;i++)
printf("%d ", list[i]);
printf("\n");
mergeSort(list, 0, n - 1);
printf("정렬 후: \n");
for (i = 0;i < n;i++)
printf("%d ", list[i]);
printf("\n");
}