본문 바로가기

Java/Java_Sort(정렬) 알고리즘 ( 삽입, 선택, 버블,합병(병합) )

Java_Sort(정렬)알고리즘 ( Selection, Insertion, Bubble, Merge )

반응형

1. 정렬 방법
  ㄱ. 선택법 : 선택 정렬 , 힙정렬  ( Selection sort )

        - 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해 나가는 정렬 방식

** 결과 값 **


  ㄴ. 교환법 : 버블 정렬, 힙정렬 (Bubble Sort)

     - 서로 인접한 두원소를 검사하여 정렬하는 알고리즘

     - 인접한 2개의 수를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환

     - 선택정렬과 기본 개념은 유사 

** 결과 값 **


  ㄷ. 삽입법 : 삽입 정렬, 쉘정렬 ( Insertion sort )

     -  자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여,

자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 정렬이다.

main()

1)

for문 처리

2)

while 문

 

** 결과 값 **

 

 

 

  ㄹ. 병합법 : 병합, 합병 정렬  ( Merge sort )

    -  오름차순을 기준으로 정렬       :   *하나하나씩으로 나눈후 하나씩 합치면서 정렬한다.

     1.  리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다.

     2.  그렇지 않은 경우에는 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다
     3.  각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다.
     4.  두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다.

     - 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 
       두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법

1)

병합 정렬

** 결과 값 **

 

 

2)

병합 정렬

** 결과 값 **


  ㅁ. 기  타 : 기수 정렬
2. 검색 방법
  ㄱ. 순차검색 (sequence search)
  ㄴ. 이진검색 (bnary search)

     - 정렬(필수조건)된 데이터 집합을 이분화하면서 탐색하는 방법 

ex) 임의 수 100개를 생성 후 입력 값에 해당하는 수가 몇 번째에 있는지 검색

main()

** 결과 값 **

 

 

 

 

***** 비교 *****

단순(구현 간단)하지만 비효율적인 방법
  * 삽입 정렬, 선택 정렬, 버블 정렬
복잡하지만 효율적인 방법
  * 퀵 정렬, 힙 정렬, 합병 정렬, 기수 정렬

반응형