Algorithm

[sort]삽입 정렬(Insertion sort)

녱녱 2021. 1. 7.

1학기 자료구조 수업을 더 열심히 들을 걸..이라는 생각을 했다

개인공부이므로 오류가 있을 수 있습니다!

 

1. 정의

삽입 정렬은 무작위로 나열되어 있는 데이터를 오름차순으로 정리하는 정렬의 방법 중 하나이다.

나열 되어 있는 데이터의 원소를 적절한 위치에 삽입하여 정렬한다

 

2. 코드

위와 같은 내용을 코드로 구현하면 다음과 같다.

#include <stdio.h>

int main() {
	int i, j, temp;
	int arr[10] = { 1,11, 55, 7, 8, 10, 63, 3, 97, 9 };

	for (i = 0; i < 9; i++) {
		j = i; //삽입할 원소를 지정한다
		while (arr[j] > arr[j + 1]) {
			temp = arr[j];
			arr[j] = arr[j + 1];
			arr[j + 1] = temp;
			j--; //삽입될 원소의 정확한 위치를 찾기 위해 인덱스 번호를 한칸씩 줄이며 계속 비교 
		}
	}

	for (i = 0; i < 10; i++) {
		printf("%d ", arr[i]);
	}
}

자료 배열의 모든 요소를 앞에서부터 차례로 정렬된 배열 부분과 비교하여 삽입될 원소의 위치를 찾기 때문에 버블정렬이나 선택 정렬보다는 효과적이다

'Algorithm' 카테고리의 다른 글

[sort] 버블정렬(bubble sort)  (0) 2021.01.07
[sort] 선택정렬(selection sort)  (0) 2021.01.06

댓글