알고리즘 - 선택정렬

김혜진·2022년 9월 21일
0

알고리즘

목록 보기
7/13

선택정렬

선택정렬이란

  • 선택 정렬은 최소값을 찾아 앞쪽으로 이동하기를 배열 크기만큼 반복하는 정렬 방법.
  • 배열에서 가장 작은 값을 찾아 처음으로 일단 보낸다.
  • 첫 번째 요소는 제외하고 남은 요소들 중에 제일 작은 값을 찾아 선두로 보내기를 배열 끝까지 반복한다.
  • 작은 순서대로 계속 앞쪽으로 이동하므로 반복이 끝나면 모든 요소를 순서대로 정렬.
#include<stdio.h>
#include<string.h>

void SelectionSort(char* str, int num);
void Swap(char* pMin, char* pStr);

void main()
{
	char str[] = "winapi";
	
	printf("정렬 전의 문자열 : %s\n", str);
	
	int num = strlen(str);

	SelectionSort(str, num);

	printf("정렬 후의 문자열 : %s\n", str);
}

void SelectionSort(char* str, int num)
{
	// 선택정렬 알고리즘
	int minidx = 0; // 최소값을 가지고 있는 요소의 인덱스
	int i, j;

	for (i = 0; i < num - 1; i++)
	{
		for (j = i + 1, minidx = i; j < num; j++)
		{
			if (str[minidx] > str[j])
			{
				minidx = j;
			}
		}
		if (minidx != i)
		{
			Swap(&str[minidx], &str[i]);
		}
	}
}

void Swap(char* pMin, char* pStr)
{
		char temp;
		temp = *pMin;
		*pMin = *pStr;
		*pStr = temp;
}
profile
알고 쓰자!

0개의 댓글