알고리즘 & 자료구조

Bubble Sort 간단 예제 - swift

나른한코딩 2021. 7. 16. 14:34

정수 배열을 파라미터로 주었을 때 버블 정렬한 배열을 리턴해주는 함수이다.

import Foundation

var randomArr = Array(1..<10+1).shuffled() // 랜덤으로 섞인 정수배열 생성.

// 버블정렬
func bubbleSort(_ array: [Int]) -> [Int] {
  var arr = array
  
  for _ in 0..<arr.count {
    for j in 0..<arr.count - 1 {
      if arr[j] > arr[j+1] {
        arr.swapAt(j, j+1)
      }
    }
  }
  return arr
}

bubbleSort(randomArr)

버블 정렬에 flag값을 주어 성능을 향상 시킨 함수이다.

// 성능 향상
/*
 - bubbleSort의 특징은 한번 순회를 마치면가장 큰 값이 배열의 가장 뒤쪽으로 가게 된다는 점이다.
 - 반복문을 계속 진행하다보면 배열의 뒤쪽부분은 큰 값의 순서대로 정렬이 될 것이고,
 우리가 원하던 정렬이 이미 이루어진 상태이므로 더 이상 비교를 하지 않아도 된다.
 
 - flag를 사용하여 앞쪽이 정렬이 되어있다면 더 이상 순회를 돌 필요가 없음을 표시하기 위해 사용.
 */
func bubbleSortFlag(_ array: [Int]) -> [Int] {
  var arr = array
  var flag: Bool
  
  for i in 1..<arr.count {
    flag = true
    for j in 0..<arr.count - i {
      guard arr[j] > arr[j+1] else { continue }
      arr.swapAt(j, j+1)
      flag = false
    }
    guard flag else { continue }
    break
  }
  return arr
}

bubbleSortFlag(randomArr)

 

 

틀린부분이 있거나, 더 좋은 방법이 있다면 댓글로 남겨주세요! 
🌈댓글은 언제나 환영입니다🙏🏻

 

반응형

'알고리즘 & 자료구조' 카테고리의 다른 글

BFS/DFS 간단 예제 - Swift  (0) 2022.02.26
[자료구조] Trie - Swift  (0) 2022.02.25
Stack / Queue 구현해보기 - swift  (0) 2021.08.20