Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 인터넷 이해와 활용
- 심즈3
- origin
- Android
- 솔루션
- 태그를 입력해 주세요.
- 오리진
- C언어
- 에러
- 소켓통신
- 스카이림
- 관평동
- 한빛미디어
- C++
- mysql
- 연습문제
- 안드로이드
- 정보보안개론과 실습
- 어플리케이션 숨기기
- ubuntu for phone
- 둔산동
- 예제
- 맛집
- 윈도우
- 시스템 사양
- C4996
- 소주
- C
- Error
- NFC
Archives
- Today
- Total
스프링노트
[데이터베이스] 버블정렬 기법 (거품정렬)과 삽입정렬 기법 본문
거품 정렬
거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복합도가 로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다.
55 07 78 12 42 첫 번째 패스 07 55 78 12 42 07 55 78 12 42 07 55 12 78 42 07 55 12 42 78 두 번째 패스 07 55 12 42 78 07 12 55 42 78 07 12 42 55 78 세 번째 패스 07 12 42 55 78 07 12 42 55 78 네 번째 패스 07 12 42 55 78 정렬 끝
의사 코드로 나타낸 알고리즘
procedure bubbleSort( A : list of sortable items ) defined as: for each i in 1 to length(A) do: for each j in length(A) downto i + 1 do: if A[ j ] < A[ j - 1 ] then swap( A[ j ], A[ j - 1 ] ) end if end for end for end procedure
삽입 정렬
삽입 정렬(揷入整列)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.
k번째 반복 후의 결과 배열은, 앞쪽 k + 1 항목이 정렬된 상태이다.
각 반복에서 정렬되지 않은 나머지 부분 중 첫 번째 항목은 제거되어 정확한 위치에 삽입된다. 그러므로 다음과 같은 결과가 된다.
배열이 길어질수록 효율이 떨어지지만, 구현이 간단하다는 장점이 있다.
선택 정렬이나 거품 정렬과 같은 같은 O(n2) 알고리즘에 비교하여 빠르며, 안정 정렬이고 in-place 알고리즘이다.
31 | [25] | 12 | 22 | 11 | 두 번째 원소를 부분 리스트에서 적절한 위치에 삽입한다. | ||
<25> | 31 | [12] | 22 | 11 | 세 번째 원소를 부분 리스트에서 적절한 위치에 삽입한다. | ||
<12> | 25 | 31 | [22] | 11 | 네 번째 원소를 부분 리스트에서 적절한 위치에 삽입한다. | ||
12 | <22> | 25 | 31 | [11] | 마지막 원소를 부분 리스트에서 적절한 위치에 삽입한다. | ||
<11> | 12 | 22 | 25 | 31 | 종료. |
void insertionSort(int[] arr) { for(int index = 1 ; index < arr.length ; index++){ int temp = arr[index]; int aux = index - 1; while( (aux >= 0) && ( arr[aux] > temp) ) { arr[aux+1] = arr[aux]; aux--; } arr[aux + 1] = temp; } }
void insertion_sort ( int *data, int n )
{
int i, j, remember;
for ( i = 1; i < n; i++ )
{
remember = data[(j=i)];
while ( --j >= 0 && remember < data[j] ) data[j+1] = data[j];
data[j+1] = remember;
}
}
출처 : 위키백과
'DEVELOPMENT' 카테고리의 다른 글
[이클립스] 이클립스 에디터 글꼴 변경하기 (0) | 2014.02.21 |
---|---|
jQuery 튜토리얼, 모음 사이트 링크들 (0) | 2013.07.30 |
[JAVA] AWT를 이용한 간단한 캘린더 만들기 (0) | 2013.04.29 |