2014. 11. 10. 13:35ㆍBasic/Data Structure
1.Bubble Sort
거품 정렬은 가장 쉬운 정렬이지만 속도가 느리다는 단점이 있습니다.
그래서 비교적 적은 크기의 데이터에 대해서 사용을 하는 경우가 많습니다.
다음과 같은 특징을 가지고 있습니다.
최고 속도 - O(n)
평균 속도 - O(n^2)
최악 속도 - O(n^2)
메모리 사용 - 1
안정성 - 안정
특징 - 작은 코드 크기 (가장 단순 할 듯)
알고리즘
의사코드 (Pseudocode)
procedure bubbleSort( A : list of sortable items )
repeat
swapped = false
for i = 1 to length(A) - 1 inclusive do:
if A[i+1] > A[i] then
swap( A[i+1], A[i] )
swapped = true
end if
end for
until not swapped
end procedure
2. Insert Sort
삽입 정렬은 거품 정렬과 함께 간단한 정렬 중 대표적인 정렬입니다.
안정 정렬이고, 제자리 (in-place) 정렬 이라는 특징도 가지고 있습니다.
제자리 정렬이라 추가적인 메모리는 없어도 되지만, 배열이 길 경우 효율이 떨어진다는 단점도 있습니다.
특징을 정리하면 다음과 같습니다.
최고 속도 - O(n)
평균 속도 - O(n^2)
최악 속도 - O(n^2)
메모리 사용 - 1
안정성 - 안정
특징 - 작은 크기, 제자리 정렬
알고리즘
의사코드 (Pseudo code)
for i ← 1 to i ← length(A)-1 { // A[ i ] is added in the sorted sequence A[0, .. i-1] // save A[i] to make a hole at index iHole item ← A[i] iHole ← i // keep moving the hole to next smaller index until A[iHole - 1] is <= item while iHole > 0 and A[iHole - 1] > item { // move hole to next smaller index A[iHole] ← A[iHole - 1] iHole ← iHole - 1 } // put item in the hole A[iHole] ← item }
3. Selection Sort
선택 정렬은 내부 정렬 알고리즘의 대표적인 정렬 방법입니다.
최소값을 저장하기 위한 변수 하나만 필요해서 추가적인 공간은 딱 1의 크기만 있으면 됩니다.
도서관에서 책이 꽂혀 있을 때 순서대로 맞추는 경우 저도 모르게 선택 정렬 방법을 사용했던 기억이 납니다.
특징은 다음과 같습니다.
최고 속도 - O(n^2)
평균 속도 - O(n^2)
최악 속도 - O(n^2)
메모리 사용 - 1
안정성 - 불안정
특징 - 내부 정렬 알고리즘
알고리즘
의사코드 (Pseudo code)
for i <- 1 to i <- length (A) - 1)
min = i
for j <- i + 1 to j <- length(A)
if A(j) < A(min)
min = j
swap A(i), A(min)
'Basic > Data Structure' 카테고리의 다른 글
버블정렬 (Bubble Sort) (1) | 2016.11.09 |
---|---|
삽입정렬 (Insertion Sort) (0) | 2016.11.09 |
선택정렬 (Selection Sort) (0) | 2016.11.09 |
트리 (Tree) (0) | 2016.11.09 |
정렬 (0) | 2014.11.10 |