버블, 힙 정렬 같은 알고리즘이 있는 정렬이 아닌 단순 타겟을 배열의 오른쪽 혹은 왼쪽으로 모으는 방법이다.
퀵정렬 등과 같은 정렬 알고리즘에서 자주 쓰이는 핵심 절차이다.int index = 0; for (int i = 0; i < item.Length; i++) { if (item[i] != null && item[i].canEquip == true) { (item[index], item[i]) = (item[i], item[index]); index++; } }(실제로 내가 사용한 코드, bool값이 true인 target을 배열의 왼쪽(0번째)으로 옮김)
- C#에서 지원해주는 정렬 함수, 버블 정렬 같은 기본 알고리즘이 아닌 Introsort(인트로소트)라는 퀵정렬 + 힙정렬 + 삽입정렬 이 세 가지 정렬 알고리즘의 방식을 섞은 정렬 알고리즘을 사용한다.
- 비교 함수를 넘겨주어 정렬의 기존을 자유롭게 정할 수 있는 장점이 있다.
Array.Sort(item, (a, b) => { if (a == null && b == null) return 0; if (a == null) return 1; if (b == null) return -1; return a.Name.Length.CompareTo(b.Name.Length); });
도전을 하면서 적혀있는 조건들 + 내가 추가로 더 하고 싶은 것을 진행하면서 모르는 것을 찾고 그 찾은 내용을 공부하다보니 생각했던 것 보다 오늘 진행 정도가 많이 늦어졌다. 점점 아는 것이 늘어가고는 있긴 하지만 이건 정규 학습 시간 외 진행하고 일단 정규 학습 땐 과제들, 기간 안에 해야 할 것들을 우선적으로 하는 것이 맞아보인다