본문 바로가기
카테고리 없음

InsertionSort(삽입정렬), C, C++

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

Insertion_Sort.cpp
0.00MB

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

 

회전마다 비교하는 데이터의 갯수를 점점 증가시킨다. 정렬이 거의 다 되어 있는 경우 가장 빠르다.

( 예, 1회전 - 2개 데이터 비교, 2회전 - 3개 데이터비교....)

 

//정렬이 거의 다 되어 있는 경우 버블, 삽입, 선택 중 가장 빠르다. 
#include 

int main(){
	int a[] = {50, 20, 30, 10, 40};
	int size = sizeof(a)/sizeof(int);
	int temp, j;
	
	for(int i = 0; i < size; i++){
		printf("%d ", a[i]);
	}
	for(int i = 1; i < size; i++){
		j = i;
		while(j != 0){
			if(a[j] < a[j-1]){
				temp = a[j];
				a[j] = a[j-1];
				a[j-1] = temp;
				j--;
			} else{
				j--;
			}
			
		}
		printf("\n");
		for(int i = 0; i < size; i++){
		printf("%d ", a[i]);
		}
	}
	
	return 0;
}

내가 짠 코드는 이렇지만 더 좋은 코드가 있는듯하다... while 부분에 조건을 두개를 줘서

while(j > 0 && a[j] < a[j-1]){
	temp = a[j];
	a[j] = a[j-1];
	a[j-1] = temp;
}

이게 더 간단하고 속도면에서도 빠를거 같다.

반응형