본문 바로가기

알고리즘/개념

[알고리즘] 버블정렬 (bubble sort)

버블정렬이란?

  • 두개의 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾼다

  • 예 : data_list = [1, 9, 3, 2]
    • 1차 로직
      • 1, 9 비교 : 자리바꿈X [1,9,3,2]
      • 9, 3 비교 : 자리바꿈O [1,3,9,2]
      • 9, 2 비교 : 자리바꿈O [1,3,2,9]
    • 2차 로직
      • 1, 3 비교 : 자리바꿈X [1,3,2,9]
      • 3, 2 비교 : 자리바꿈O [1,2,3,9]
      • 3, 9 비교 : 자리바꿈X [1,2,3,9]
    • 3차 로직
      • 1, 2 비교 : 자리바꿈X [1,2,3,9]
      • 2, 3 비교 : 자리바꿈X [1,2,3,9]
      • 3, 9 비교 : 자리바꿈X [1,2,3,9]

 

알고리즘 구현

  • n개의 리스트가 있는 경우, 최대 n-1번의 로직 적용
  • 로직이 경우에 따라 일찍 끝날수도 있다 -> 한번도 데이터가 교환된 적이 없다면 스탑!
def bubblesort(data):
	for index in range(len(data)-1):
    	swap = False
        for index2 in range(len(data)-index-1):
        	if data[index2] > data[index2 + 1]:
            	data[index2], data[index2 + 1] = data[index2 + 1], data[index2]
                swap = True
                
        if swap == False:
        	break
	
    return data