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
- 클린아키텍처
- OperationQueue
- 동시성프로그래밍
- 동작과정
- apple intelligence
- swift알고리즘
- cleanarchitecture
- Content Hugging priority
- Union-Find
- LLM
- Content Compression Resistance priority
- 애플인텔리전스
- RxSwift요약
- AI
- ai expo
- swift
- 알고리즘
- RxCocoa
- gitlab
- 오토레이아웃
- 자료구조
- rxswift
- 백준
- Autolayout
- CICD
- mvvm
- CI/CD
- IOS
- ReactiveX
- gitlabci/cd
Archives
- Today
- Total
JosephCha의 개발일지
버블정렬 본문
버블정렬(bubble sort)이란?
- 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘
- 데이터가 네 개 일때, 예시
- ex) unSortedArray = [1, 9, 3, 2]
- 1차 로직 적용
- 1 와 9 비교, 자리바꿈없음 [1, 9, 3, 2]
- 9 와 3 비교, 자리바꿈 [1, 3, 9, 2]
- 9 와 2 비교, 자리바꿈 [1, 3, 2, 9]
- 2차 로직 적용
- 1 와 3 비교, 자리바꿈없음 [1, 3, 2, 9]
- 3 과 2 비교, 자리바꿈 [1, 2, 3, 9]
- 3 와 9 비교, 자리바꿈없음 [1, 2, 3, 9]
- 3차 로직 적용
- 1 과 2 비교, 자리바꿈없음 [1, 2, 3, 9]
- 2 과 3 비교, 자리바꿈없음 [1, 2, 3, 9]
- 3 과 9 비교, 자리바꿈없음 [1, 2, 3, 9]
- 1차 로직 적용
- ex) unSortedArray = [1, 9, 3, 2]
func bubbleSort(unSortedArray: [Int]) -> [Int] {
var unSortedArray = unSortedArray
for index1 in 0..<unSortedArray.count - 1 {
var swap = false
for index2 in 0..<unSortedArray.count - 1 - index1 {
if unSortedArray[index2] > unSortedArray[index2+1] {
let temp = unSortedArray[index2]
unSortedArray[index2] = unSortedArray[index2+1]
unSortedArray[index2+1] = temp
swap = true
}
}
if swap == false {
break
}
}
return unSortedArray
}
첫번째 for문은 맨 앞부터 맨 끝까지 2개씩 비교하는 과정의 총 진행할 사이클 횟수이며, '정렬하고자 하는 배열의 인덱스 수 - 1'만큼 진행된다.
두번째 for문은 맨 앞부터 맨 끝까지 2개씩 비교 로직이며, 마찬가지로 원래 '정렬하고자 하는 배열의 인덱스 수 - 1'만큼 진행된다.
하지만 비교 로직을 1번씩 적용할 때 마다, 맨 뒤에서부터 사이클횟수만큼(index1) 이미 정렬되어, 굳이 비교 로직을 진행할 필요가 없기에 사이클횟수(index1)를 빼주며 비교로직을 돌린다.
또한, swap이라는 bool 플래그를 통해 2개씩 비교하는 두번째 for문에서 swap이 한번이라도 이루어 지지 않으면, 이미 모두 정렬이 되어있는 상태기 떄문에, 모든 과정을 break 시킨다.
'알고리즘 및 자료구조' 카테고리의 다른 글
병합정렬 (0) | 2022.04.20 |
---|---|
동적 계획법(DP) (0) | 2022.02.24 |
선택정렬 (0) | 2021.12.08 |
삽입정렬 (0) | 2021.12.08 |
백준 알고리즘 (팩토리얼) No. 10872 (0) | 2021.07.28 |
Comments