버블 정렬

gksrudtlr
|2023. 10. 25. 14:59
    • 정의
      • 다른 정렬에 비해 시간이 오래걸리지만 로직이 단순하고 구현이 간단하다
      • 데이터의 인접 요소끼리 비교, swap연산을 수행하며 정렬하는 방식
    • 핵심
      • 인접한 데이터의 크기를 비교해 정렬하는 방식
      • 시간복잡도는 O(n^2)으로 다른 알고리즘에 비해 느리다
      • 인접한 데이터간에 Swap 연산으로 정렬한다
    • 정렬 과정
      • 비교 연산이 필요한 루프 범위를 설정한다
      • 인접한 데이터 값을 비교한다
      • swap 조건에 부합하면 swap 연산을 수행한다
      • 루프 범위가 끝날 때 까지 2,3번 과정을 반복한다
      • 정렬 영역을 설정하여 다음 루프를 실행할 때 이 영역을 제외한다
      • 비교대상이 없을 때 까지 위의 과정을 반복한다
    • 구현
      #include<iostream>
      #include <vector>
      using namespace std;
      
      void BubbleSort(vector<int>& v)
      {
          int size = (int)v.size()-1;
      
          bool changed = false;
          for (int i = 0; i < size; i++)
          {
              changed = false;
              for (int j = 0; j < size - i; j++)
              {
                  if (v[j] > v[j + 1])
                  {
                      changed = true;
                      swap(v[j], v[j + 1]);
                  }
              }
              if (changed == false)
                  break;
          }
      }
      
      int main()
      {
      	vector<int> v = { 42,32,15,24,60 };
      
      	BubbleSort(v);
      
      }

 

'자료구조 > Do It' 카테고리의 다른 글

삽입 정렬  (1) 2023.10.26
선택 정렬  (0) 2023.10.26
스택과 큐  (0) 2023.10.24
구간 합  (0) 2023.10.24
배열과 리스트 그리고 벡터  (0) 2023.10.20