반응형

오늘은 정렬에 대해 알아볼 것인ww

사실 정렬에는 무수히 많은 알고리즘이 있따.

아래가 정렬의 종류라네요.... 난 몰랑...

  • 선택정렬
  • 삽입정렬
  • 버블정렬
  • 병합정렬
  • 정렬
  • 정렬
  • 트리정렬

사실 다 알필욘 없고 오늘은 버블정렬에 대해 글을 써보겠스빈당

 

버블정렬이란?

버블정렬.gif

버블정렬은 움짤만 봐도 알 수 있듯이, 인접한 두 원소를 비교해가며 조건에 따라 swap(교환이라는 뜻ㅎ)하는 정렬알고리즘입니당....

이 움짤에서 사실 디테일이 들어가있는데, 눈치채신 분들도 있겠지만 더 이상 정렬할 필요가 없을 때 정렬을 멈추는 것입니다 ㄷㄷ... 이게 진짜 중요합니다 굿

오늘의 수업에서 짠 저의 버블정렬 알고리즘을 공개하겠습니다....... 두둥

// 버블정렬
struct MySort
{
    static void BubbleSort(std::vector<int>& numbers)
    {
        bool isSwap;
        for (int i = 0; i < numbers.size(); i++) {
            std::cout << "cycle start\n";
            isSwap = false;
            for (int j = 0; j < numbers.size() - 1 - i; j++)
            {
                if (numbers[j] > numbers[j + 1])
                {
                    std::swap(numbers[j], numbers[j + 1]);
                    isSwap = true;
                    std::cout << "sort!\n";
                }
            }
            if (!isSwap) return;
        }
    }
};

돌을 던지지 마시오

기본적인 오름차순 버블정렬 알고리즘을 짜봤읍니다...

 

numbers[j] > numbers[j + 1]를 비교해서 참이면 swap을 해줬고, isSwap을 참으로 바꿔줬읍니다.

isSwap은 매 사이클마다 false로 바꿔주는데, swap한적이 없으면 정렬이 다 되어있는 상태이므로, 정렬을 종료하도록 코드를 짜줬읍니다.

 

 

반응형

+ Recent posts