Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- request.path
- 포맷팅
- nginx
- 정렬
- render html
- Djnago CSRF
- is_ajax() not working
- 클린코드
- 글자 수
- 클린코드-함수
- 선택 정렬
- django
- 버블 정렬
- Proxy_pass
- queryset
- Django Ajax
- queryset filter
- django 시작하기
- 알고리즘
- CleanCode
- 복수 외래키
- Trre heap
- 자료구조
- HTTP
- reCAPTCHA V2
- request.GET
- 효울적
- check ajax
- 클린 코드
- 트리란
Archives
- Today
- Total
Yang 코딩 공부
알고리즘 - 정렬 1.2 버블 정렬 본문
버블 정렬 정의
: 모든 인접한 두 데이터를 차례대로 비교해서 왼쪽 데이터가 더 큰 경우 오른쪽 데이터와 자리를 바꾸는 과정을 반복해서 정렬을 수행하는 방식.
int BubleSore(A[], n)
{
for(i=0; i < n-1; i++){ //단계 : (n-1)회 반복
for(j=0; j < n - 1; j++){ //좌측에서 우측으로 진행
if(A[j] > A[j+1]){ //좌측 데이터 > 우측 데이터 일 경우
imt tmp = A[j]
A[j] = A[j+1]
A[j+1] = tmp
}
}
return (A)
}
성능 => O(n^2)
안정적인 정렬 알고리즘
제자리 정렬 알고리즘
선택 정렬에 비해 데이터 교환이 많이 발생 -> 선택 정렬보다 비효율
따라서 개선된 버블정렬이 나타남
각 루프의 반복 회수를 줄여나가는 것.
Advanced_BubleSore(A[], n){
for(i=0; i < n -1; i++){
soretd = true; // 정렬 상태라고 가정
for(j=0; j < (n - 1) - i; j++){ // 우측형 진행
if(A[j] > A[j+1]) {
tmp = A[j]
A[j] = A[j+1]
A[j+1] = tmp
sorted = false; // 자리 바꿈이 발생 했다라는 것 -> 미정렬 상태
}
}
if(sorted == true) break; // 이미 정렬된 상태이므로 종료
}
return A
}
성능 => 최악 O(n^2) 최선 O(n)
하지만 입력된 데이터의 상태에 따라 성능이 달라짐
역순 정렬의 경우 (정렬 완료 붉은색)
0 50 40 30 20 10
1 40 30 20 10 50
2 30 20 10 40 50
3 20 10 30 40 50
4 10 20 30 40 50
=> 최악 O(n^2)
최선 정렬의 경우
0 10 20 30 40 50
1 10 20 30 40 50
=> 최선 O(n)
'알고리즘' 카테고리의 다른 글
알고리즘 - 정렬 1.1 선택 정렬 (0) | 2025.04.30 |
---|---|
알고리즘 - 정렬 1.0 기본 개념 (0) | 2025.04.30 |