ID_DI
DI's study notes
ID_DI
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • Deep-Learning (3)
      • CNN (2)
      • NLP (1)
    • Data_Python (6)
      • Numpy (0)
      • Matplotlib (4)
    • Python (8)
      • Python Algorithm (6)
    • Java (36)
      • Java(base) (33)
      • Java practice(base) (2)
    • Git (12)
    • Algorithm (7)
    • etc (7)
    • linux (1)
    • DeskSetup (0)
    • TIL_모각코 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • git add.
  • Github
  • string to int
  • Python
  • git
  • java
  • binarySearch
  • 커밋
  • 자바
  • 알고리즘
  • staged
  • 합병정렬
  • README.md
  • java base
  • java.lang
  • 파이썬
  • matplotlib
  • java.net
  • java 기초
  • 정렬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ID_DI

DI's study notes

[알고리즘] bubble_sort 버블정렬(pseudo-code, 파이썬, Java)
Algorithm

[알고리즘] bubble_sort 버블정렬(pseudo-code, 파이썬, Java)

2021. 10. 15. 00:19

버블정렬

  1. 매 단계마다 처음부터 마지막까지 차례대로 인접한 두 원소를 비교하여 뒤에 있는 원소가 앞의 원소보다 작은 경우 두 원소를 교환

  2. 각 단계 수행 후 최대값이 마지막으로 이동하므로, 마지막 원소는 정렬대상에서 제외

Pseudo-code

Algorithm bubbleSort(a, n)
   for i = n – 1 downto 1
      for j = 0 to i-1
         if(a[j] > a[j+1])  then 
            int temp = a[index]
            a[index] = a[i]
            a[i] = temp

Python

def bubble_sort(arr):
    for i in range(len(arr)-1,0,-1):
        for j in range(i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]

Java

public class Bubble{
    public void sort(int[] arr){
        for(int i = arr.length -1; i > 0; i--){
            for(int j = 0; j <= i; j++){
                   if(arr[j] < arr[j+1]){
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }             
            }
        }
    }
}

개선된 버블정렬

앞 뒤 자리의 비교가 일어나지 않았다면, 정렬되지 않는 값이 하나도 없었다고 간주할 수 있으므로, 정렬을 종료한다.(최적화)

Pseudo-code

Algorithm bubbleSort(a, n)
      for i = n – 1 downto 1
          sorted = true  //flag 생성
          for j = 0 to i-1
             if(a[j] > a[j+1])  then
                 temp = a[j]
                 a[j] = a[j+1]
                 a[j+1] = temp              
                 sorted = false
          if  (sorted)
             return

Python

def bubble_sort(arr):
    for i in range(len(arr) - 1, 0, -1):
        sorted = True
        for j in range(i):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                sorted = False
        if sorted:
            break

Java

public class Bubble{
    public void sort(int[] arr){
        for(int i = arr.length -1; i > 0; i--){
            boolean sorted = true;
            for(int j = 0; j <= i; j++){
                   if(arr[j] < arr[j+1]){
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    sorted = false;
                }             
            }
            if(sorted){
                break;
            }
        }
    }
}

수행시간분석

  • 최악의 경우 (역순으로 정렬)

    • W(n) = O(n^2)
  • 최선의 경우 (이미 정렬)

    • B(n) = O(n)

'Algorithm' 카테고리의 다른 글

[알고리즘] binarySearch 이진탐색, 재귀이진탐색_분할과 정복 (pseudo-code 파이썬, Java)  (0) 2021.10.16
[알고리즘]분할과 정복 개념 및 예시  (0) 2021.10.15
[알고리즘] selectionSort 선택정렬(pseudo-code, Java, 파이썬)  (0) 2021.10.14
[알고리즘] Stable & In-place  (0) 2021.10.14
알고리즘에 대하여 (pseudo-code)  (0) 2021.09.07
    'Algorithm' 카테고리의 다른 글
    • [알고리즘] binarySearch 이진탐색, 재귀이진탐색_분할과 정복 (pseudo-code 파이썬, Java)
    • [알고리즘]분할과 정복 개념 및 예시
    • [알고리즘] selectionSort 선택정렬(pseudo-code, Java, 파이썬)
    • [알고리즘] Stable & In-place
    ID_DI
    ID_DI
    Computer Vision

    티스토리툴바