자바/++

Collections.sort() 와 Arrays.sort() 시간복잡도, 사용법

backend dev 2022. 12. 3.

Collections.sort()

시간복잡도 

평균 : O(NlogN)

최악 : O(NlogN)

내부 알고리즘 : Timsort(삽입+병합 정렬)

 

Arrays.sort()

시간복잡도 

평균 : O(NlogN)

최악 : O(N^2)

내부 알고리즘 :  DualPivotQuicksort

 

 

 

 

Collections.sort() 사용법

public static void main(String[] args)throws IOException {

    List<Integer> numbers = new ArrayList<>();
    numbers.add(5);
    numbers.add(2);
    numbers.add(1);
    numbers.add(4);

    Collections.sort(numbers);
    bw.write(numbers.toString());

    bw.flush();
    bw.close();


}

 

Collections.sort() 내림차순

public static void main(String[] args)throws IOException {

    List<Integer> numbers = new ArrayList<>();
    numbers.add(5);
    numbers.add(2);
    numbers.add(1);
    numbers.add(4);

    Collections.sort(numbers,Collections.reverseOrder());
    bw.write(numbers.toString());

    bw.flush();
    bw.close();


}

 

Collections.sort() 는 List.sort()로 대체 가능하다.

List.sort()

오름차순

numbers.sort(Comparator.naturalOrder());

내림차순

numbers.sort(Collections.reverseOrder());

 

Arrays.sort() 사용방법

public static void main(String[] args)throws IOException {

    int[] numbers = new int[]{5, 2, 4, 1};
    Arrays.sort(numbers);

    bw.write(Arrays.toString(numbers));
    
    bw.flush();
    bw.close();


}

 

Arrays.sort()  내림차순

int배열이 아닌 Integer배열로 바꿔줘야함. (primitive타입이 아닌, wrapper 타입으로)

public static void main(String[] args)throws IOException {

    int[] numbers = new int[]{5, 2, 4, 1};

    Integer[] integerNumbers = Arrays.stream(numbers).boxed().toArray(Integer[]::new);

    Arrays.sort(integerNumbers,Comparator.reverseOrder());

    bw.write(Arrays.toString(integerNumbers));

    bw.flush();
    bw.close();


}

 

 

 

출처

https://codechacha.com/ko/java-sort-list/#2-listsort%EB%A1%9C-list-%EC%A0%95%EB%A0%AC

 

Java - 리스트 정렬, 3가지 방법

자바에서 ArrayList 등, List를 정렬하는 3가지 방법을 소개합니다. Collections.sort(list)는 인자로 전달된 list를 오름차순으로 정렬합니다. 내림차순으로 정렬하려면 sort(list, Collections.reverseOrder())처럼,

codechacha.com

 

댓글