따라서 수행 횟수는 O(n²) = n(n-1)/2 가 된다.
의사코드 (Pseudo code)
: 알고리즘 flow 파악용으로 실제 돌아가는 코드는 아니다.
슈도 코드라고도 읽고, 가짜 코드라고도 한다.
bubbleSort(arr[]){
arr[SIZE]
for i=1 to SIZE-1 {
for j=0 to SIZE-i {
if(arr[j] > arr[j+1])
swap (arr[j],arr[j+1])
}
}
}
따라서 수행 횟수는 O(n²) = n(n-1)/2 가 된다.
하지만 수가 큰 경우 비교를 하지 않는 경우도 발생하기 때문에 버블 정렬보다는 평균적으로 빠르다.
insertionSort(arr[]){
arr[SIZE]
for i=1 to SIZE {
for j=i to 0 (j--) {
if(arr[j] < arr[j-1])
swap (arr[j],arr[j-1])
}
}
}
따라서 수행 횟수는 O(n²) = n(n-1)/2 가 된다.
위 세가지 정렬은 제자리 정렬 (in-place sort) 이라고도 한다.
배열 내에서 자리만 바꿔가면서 정렬하는 방식이기 때문에 추가적인 데이터는 따로 필요하지 않다.
따라서 메모리를 최소한으로 사용하면서 정렬하는 방식이다.
insertionSort(arr[]){
arr[SIZE]
for i=0 to SIZE-1 {
min=i
for j=i+1 to SIZE {
if(arr[j] < arr[min])
min=j
}
swap (arr[i],arr[min])
}
}