알고리즘 study -2-

6153 단어 algorithmalgorithm

<정렬>

-> 특정 기준을 적용하여 나열하는 것


  • 선택정렬
  • 삽입정렬
  • 버블정렬
  • 합병정렬
  • 퀵정렬

< 선택정렬 >

-> 최솟값을 앞으로 이동시킨다

배열에서 선택 정렬 시 처음 찾은 최솟값과 맨 앞의 값과 위치를 서로 바꾼다

그 다음 두 번째 위치부터 위와 같은 과정을 다시 반복

#include <stdio.h>

int main() {

	int n; // 배열 크기
	int data[100];

	scanf("%d", &n);

	for (int i = 0; i < n; i++) {
		scanf("%d", &data[i]);
	}

	printf("\n");

	for (int i = 0; i < n; i++) {
		// i 번째 부터 맨 끝까지 범위 안에서 최솟값 찾기
		// 찾은 최솟값과 i번째 값의 위치를 바꾼다

		int index = i; // 최소값의 위치를 가리키는 index
        // i 왼쪽은 정렬이 되어있는 상태

		for (int j = i; j < n; j++) {
			if (data[index] > data[j])
				index = j;
		}

		// i 가 현재 루프에서 제일 앞 원소
		int temp;
		temp = data[i];
		data[i] = data[index];
		data[index] = temp;

		for (int k = 0; k < n; k++) {
			printf("%d ", data[k]);
		}
		printf("\n");
	}

	

	return 0;
}

위 사진과 같이 정렬이 되는 과정을 볼 수 있다

좋은 웹페이지 즐겨찾기