• 선택 정렬(오름차순 기준)


-적절한 데이터를 찾아 변경하는 정렬


-자리 변경 횟수가 적은게 장점


01. 데이터 중 가장 작은 데이터를 찾는다.


02. 가장 작은 데이터와 첫번째 자리 데이터의 자리를 바꾼다.


03. 두번째 자리와 두번째 작은 데이터 변경(반복)

.

.

.


  • 그림으로 보기











'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25
삽입 정렬(Insertion Sort)  (0) 2017.01.25



  • 레벨 순회




레벨 순회 결과 : E -> B -> G -> A -> D -> F -> H -> C


-한 레벨의 모든 노드를 방문 하고 다음 레벨 방문


-레벨에서 방문 하는 순서는 왼쪽 -> 오른쪽


  • 코드보기



 

 

 

 

 

 

 

  • 후위 순회

 

 

 

 

 

 

 

후위 순회 결과 : A -> C -> D -> B ->F -> H -> G -> E

 

-왼쪽노드 -> 오른쪽 노드 -> 부모노드 순으로 방문

 

-쉽게 생각하면, 자식 노드들 모드 방문 후 마지막으로 부모 노드 방문

 

-루트 노드를 가장 마지막에 방문

 

 

  • 코드보기

 

-재귀함수를 이용한 후위 순회

더보기

//재귀함수를 이용한 후위 순회

void BinaryTree::Postorder_Recursion(NODE *node)

{

        if (node == NULL)

               return;

 

        //왼쪽 노드 재귀함수 실행

        Postorder_Recursion(node->Left);

 

        //오른쪽 노드 재귀함수 실행

        Postorder_Recursion(node->Right);

 

        //자신 데이터 출력

        PrintNode(node->Data);

 

}

 

 

-스택을 이용한 후위 순회

더보기

//스택을 이용한 후위 순회

void BinaryTree::Postorder_Stack(NODE* node)

{

        m_Stack.Clear();

 

        while (true)

        {

               while (NULL != node)

               {

                      //현재 노드를 2번 입력

                       m_Stack.Push(node);

                       m_Stack.Push(node);

 

                       //왼쪽 노드로 이동

                       node = node->Left;

               }

 

               if (!m_Stack.IsEmpty())

               {

                       node = m_Stack.Pop();

 

                       //현재 노드의 첫번째 방문일때, 오른쪽으로 이동

                       if (!m_Stack.IsEmpty() && node == m_Stack.Peek())

                       {

                              node = node->Right;

                       }

                       //현재 노드를 두번째 방문 했을때 출력한다.

                       else

                       {

                              PrintNode(node->Data);

                              node = NULL;

                       }

               }

               else

               {

                       break;

               }

        }

}

 

출처  https://www.geeksforgeeks.org/iterative-postorder-traversal-using-stack/

 

+ Recent posts