반응형
※테스트 환경은 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; }
이게 더 간단하고 속도면에서도 빠를거 같다.
반응형