Tim sort 알고리즘

public class StoreSorter {

    public List<Store> sortByRate(List<Store> stores){

        stores.sort(Comparator.comparingDouble(Store::getRate).reversed());
        return stores;
    }
}

//현재는 내림차순으로 반환하기 위해서 revered()를 추가적으로 사용함.
@Test
    void test2(){

        ArrayList<Long> id = new ArrayList<>();
        for(Long i =4000L; i<5000L; i++){
            id.add(i);
        }

        StoreSorter storeSorter = new StoreSorter();

        List<Store> storeList = storeRepository.findAllById(id);
        List<Store> stores = storeSorter.sortByRate(storeList);

        for(int i =0; i<stores.size()-1; i++) {
            assertThat(stores.get(i).getRate() >= stores.get(i+1).getRate()).isTrue();
        }
    }
    
    테스트+디버깅으로 실제로 평점에 의해서 내림차순이 됐는지 확인함

시간 비교

Tim sort 알고리즘

1) 데이터 1000건

1회 -0.128821 초

Untitled

2회 -0.007초