'전체 글'에 해당되는 글 5건

  1. 2020.04.01 :: 선택 정렬(Selection Sort)
  2. 2020.02.16 :: Unity Editor(1) - 메뉴 생성
알고리즘/정렬 2020. 4. 1. 18:26

선택정렬은 정렬되지 않은 값들을 순차적으로 탐색 해 가면서 정렬하는 방법으로 아래 순서로 된다.

 

1. 배열의 가장 첫번째 값을 선택한다.

2. 선택된 다음 값부터 가장 작은 값을 찾아낸다.

3. 그 값과 선택된 값을 바꿔준다.

4. 정렬이 된 다음 값부터 모든 값이 정렬될 때 까지 반복한다.

 

방법이 단순한 만큼 구현하기도 쉽지만, 시간복잡도는(알고리즘을 완료하는데 걸리는 시간) 배열의 크기 * (n^2)로 오래걸린다.

코드로 구현 시 이렇게 되며, 여기에

9, 8, 7, 6, 5, 4, 3, 2, 1, 0으로 이루어진 배열을 넣으면

이렇게 출력이 된다.

간단하게 0번 인덱스만 진행 순서를 보자.

 

1. 0번 인덱스(9)의 값이 선택된다.

2. 1번 인덱스(8)와 비교한다.

3. 1번 인덱스가 값이 더 작기때문에 1번을 저장한다.

4. 마지막 인덱스까지 2, 3번을 반복한다.

5. 가장 작은 값인 9번 인덱스(0)와 0번 인덱스를 바꿔준다.

6. 배열 크기보다 한개 작은 횟수(자기 자신과 다음값부터 비교하기 때문에 마지막값은 비교 할 필요가 없다.)만큼 1~5번을 반복한다.

 

처음에도 언급했지만, 정말 단순하면서도 비효율적인 정렬 알고리즘이다.

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

퀵 정렬(Quick sort)  (1) 2020.04.07
버블 정렬(Bubble Sort)  (0) 2020.04.06
삽입 정렬(Insertion Sort)  (0) 2020.04.02
posted by 이오니안
:
유니티/Editor 2020. 2. 16. 00:23

 

유니티를 보면 상단에 이 메뉴들을 항상 볼것이다.

특히 NGUI를 추가시킬 경우 이 상단 메뉴를 무조건 사용하게 되어 있는데 

"이 메뉴를 직접 만들어 보자."

라고 생각해본적이 한번쯤은 있을것이다.

그래서 공부도 할 겸 정리를 해보고자 한다.

 

- 에디터는 스크립트를 사용하기 때문에 일단 스크립트를 생성해준다.

 

 기본적으로 유니티는 C++의 헤더처럼 에디터 레퍼런스가 있지만, 처음부터 호출되어 있지는 않다.

그러므로 맨 위에 아래 내용을 입력해준다.

- using UnityEditor;

 

 레퍼런스를 사용할 수 있게 선언 했다면, 다음은 클레스명의 MonoBehaviour을 EditorWindow로 바꿔준다.

유니티의 스크립트는 Monobehaviour를 상속받는데, 에디터는 EditorWindow를 상속받기 때문이다.

 

 여기까지 했다면 이제부터 시작이다.

[MenuItem("상단 경로", 표시 여부, 표시 순서)] - 상단 메뉴를 추가시켜주며 해당 메뉴를 실행 시 바로 아래에 있는 함수를 실행시킨다.

  1. 상단 경로

     a) 메뉴의 이름

     b) /를 입력 시 하위로 추가된다.

     c) 특정 단축키도 입력이 가능하다.(후술)

  2. 표시 여부

     a) true - 해당 메뉴를 숨긴다.

     b) false - 해당 메뉴를 표시한다.

  3. 표시 순서

     a) 스크립트상의 메뉴 표기 순서가 다르더라도 기본적으로 해당 값의 오름차순으로 정렬된다.

 실제로 입력 후 확인해 보면 위 사진과 같이 메뉴가 추가된다.

 

 이번에는 위의 설명을 직접 확인할 겸 메뉴를 여러개 만들어 보았다.

 저장 후 확은을 해 보면 모두 Tools->Editor의 추가된것을 확인할 수 있다.

 총 세 개의 메뉴 중에서 두 번째 인자값을 true로 준 Third 메뉴만 출력되지 않았으며 세 번째 인자값에 의해 오름차순으로 정렬된것 역시 확인할 수 있다.

posted by 이오니안
: