본문 바로가기
개인공부/Algorithm(C, C++)

SelectionSort(선택정렬), C, C++

by 저세상판단 2020. 1. 13.
반응형

※테스트 환경은 Dev C++에서 하였고 첨부파일도 Dev C++에서 만든 소스파일입니다.

Selection_Sort.cpp
0.00MB

 

(소스 코드 테마 적용을 보려면 크롬말고 익스플로어로 열면 잘 적용됩니다.)

selectionsort(선택정렬)은 전체 데이터 중 가장 작은 수를 선택하여 앞쪽으로 배치하여 정렬하는 방법이다.

따라서 가장 작은 수부터 정렬된다.

//선택정렬, 가장 작은 수를 찾아 제일 앞쪽으로 배치 
//평균 시간 복잡도는 O(n2) 
#include 

main(){
	int a[] = {20, 40, 30, 50, 10};
	int temp;
	
	for(int i = 0; i < 5; i++){
		printf("%d ", a[i]);
	}
	
	for(int i = 0; i < 5; i++){
		//min에 가장 작은 값이 들어가고 비교하기 위해 임의의 큰 수 대입, 나는 9999
		//회전마다 min값과 index가 초기화 되어야 하기 때문에 for문 안에 배치한다. 
		int min = 9999;
		int index;
		for(int j = i; j < 5; j++){
			//가장 작은 값을 찾아서 min에 대입 
			if(min > a[j]){
				min = a[j];
				//가장 작은 값을 가지고 있는 index를 찾아서 대입 
				index = j;
			} 
			//값 스왑 
			temp = a[i];
			a[i] = a[index];
			a[index] = temp;
		}
	}
	
	printf("\n");
	for(int i = 0; i < 5; i++){
		printf("%d ", a[i]);
	}
	
	return 0;
}
반응형