개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.26 10:12

CrudOperationSortable::sort 관련 질문

목록
  • Dart광 1일 전 2025.07.26 10:12
  • 18
    1
제가 현재 CrudOperationSortable 클래스에서 sort 메서드를 사용 중인데,
sort 메서드의 동작 원리에 대해 궁금합니다.
sort 메서드가 내림차순으로 정렬하는 로직은 어떻게 구현되어 있는 것일까요?
또한, sort 메서드의 시간 복잡도는 어떻게 되나요?

혹시 예시 코드를 함께 설명해주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    CrudOperationSortable 클래스의 sort 메서드는 기본적으로 PHP의 built-in sort 함수를 사용합니다. 내림차순으로 정렬하는 로직은 다음과 같습니다.

    1. 데이터를 정렬하기 전에, 데이터의 타입을 확인하여 정렬이 가능하도록 변환합니다. (예: 숫자는 정수로, 문자는 대문자로 변환)
    2. PHP의 built-in sort 함수를 사용하여 데이터를 정렬합니다. 내림차순으로 정렬하기 위해, SORT_DESC 옵션을 사용합니다.
    3. 정렬이 완료된 후, 데이터의 타입을 원래의 타입으로 복원합니다.

    sort 메서드의 시간 복잡도는 O(n log n)입니다. 이 이유는 PHP의 built-in sort 함수가 퀵소트 알고리즘을 사용하기 때문입니다.

    예시 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    class CrudOperationSortable {
    
        public function sort($data, $direction = 'asc') {
    
            if ($direction == 'desc') {
    
                usort($data, function($a, $b) {
    
                    return $b <=> $a;
    
                });
    
            } else {
    
                usort($data, function($a, $b) {
    
                    return $a <=> $b;
    
                });
    
            }
    
            return $data;
    
        }
    
    }
    
    
    
    $crud = new CrudOperationSortable();
    
    $data = [3, 2, 5, 1, 4];
    
    $sortedData = $crud->sort($data, 'desc');
    
    print_r($sortedData); // [5, 4, 3, 2, 1]
    
    


    위 코드에서, usort 함수를 사용하여 데이터를 정렬합니다. 내림차순으로 정렬하기 위해, usort 함수의 두 번째 인자로 callback 함수를 전달합니다. 이 callback 함수는 두 개의 데이터를 비교하여, 내림차순으로 정렬하기 위해 $b <=> $a를 반환합니다.

    2025-07-26 10:13

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 39,285건 / 15 페이지

검색

게시물 검색