코드 비교 – 버블 정렬과 삽입 정렬

C로 구현한 버블 정렬

#include <stdio.h>
#define max 3

void bubble_sort(int * list,int count) {
	// 버블 정렬 알고리즘

	int i, j;
	for (i = 1; i <= max - 1; i++) { // 처음엔 change를 max-1번 해야 됨, 마지막엔 change를 1번 해야 됨
		for (j = 1; j <= max - i; j++) {
			if (list[j - 1] > list[j]) {
				int tmp = list[j - 1];
				list[j - 1] = list[j];
				list[j] = tmp;
			}
		}
		if (j > max - i) 		
	}
}

C로 구현한 삽입 정렬

#include <stdio.h>
#define max 3

void insert_sort(int * list,int count) {
	// 삽입 정렬 알고리즘
	int i, j, k;

	for (i = 1; i < max; i++) {
		k = list[i];
		for (j = i - 1; j >= 0 && list[j] > k; j--) {
			// list[j]<=k라면 i인덱스까지 정렬이 돼 있다는 것
			list[j + 1] = list[j];
		}
		list[j + 1] = k;
	}
}

요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함
다른 정렬은 마지막 요소까지 비교하지만,
삽입은 list[j]<=k인 순간, for문을 빠져 나오므로 다른 정렬에 비해 반복 횟수가 적음

Leave a Reply

Your email address will not be published. Required fields are marked *