정렬(배열 OR 목록) x (내림차순 OR 오름차순)
22025 단어 Javasortcollectionstech
int[]
, 목록(예: ArrayList<Integer>
의 재배열 방법을 총괄한다.전체 인코딩아래을 시도했습니다.전제 조건
배열 및 목록 만들기
정렬의 대상은 다음과 같은 코드로 만들어졌다.
int[] intary = new int[10];
ArrayList<Integer> intlist = new ArrayList<>();
for(int i = 0; i<10; i++){
intary[i] = (int)(Math.random()*100);
intlist.add((int)(Math.random()*100));
}
System.out.println(Arrays.toString(intary));
// [42, 33, 20, 17, 38, 95, 29, 47, 40, 4]
System.out.println(intlist);
// [26, 44, 47, 68, 86, 63, 97, 53, 28, 16]
기본: 오름차순 및 내림차순참고로 오름차순과 내림차순은 다음과 같다.
오름차순
내림차순
영어.
ascending order(ASC)
descending order(DESC)
기본 정렬 방법
작다-크다
크다 작다
예1
1,2,3,...,10
10,9,8,...,1
예2
a,b,c...,z
z,y,x,...,a
예3
aA1
1Aa
이런 기본적인 일들은 지금까지도 혼란스러운 부분이 많으니 낙서를 해서 기억해 보자.
다음은 구체적인 정렬 방법이다.기본 상승 서열의 정렬은 이미methods가 있기 때문에 대부분 간단한 처리로 끝납니다.
1. 오름차순으로 정렬
이것은 매우 간단하다.
Arrays.sort(intary);
System.out.println(Arrays.toString(intary));
결과:[11, 17, 19, 23, 30, 41, 60, 61, 61, 92]
2. 내림차순Collections.reverseOrder()
내림차순으로 다시 정렬합니다.이를 위해, 진열의 유형을 wrapper class (이 경우 Integer
로 변환한 후의 진열로 따로 준비해야 한다.Integer[] intary_desc = new Integer[intary.length];
Arrays.setAll(intary_desc, i -> intary[i]);
Arrays.sort(intary_desc, Collections.reverseOrder());
System.out.println(Arrays.toString(intary_desc));
결과[98, 78, 61, 60, 57, 48, 43, 40, 37, 23]
3. 목록을 오름차순으로 정렬
목록
ArrayList
에서 수반Collections
의 방법을 사용할 수 있습니다[^1].여기서 sort()
를 사용하여 순서를 변경합니다.Collections.sort(intlist);
System.out.println(intlist);
결과[3, 18, 20, 21, 37, 45, 55, 70, 72, 74]
4. 목록 내림차순 정렬
상기3. 목록을 오름차순으로 정렬와 마찬가지로
Collections
의 방법sort()
을 사용하지만 두 번째 매개 변수로 비교기를 사용한다.public static <T> void sort(List<T> list,Comparator<? super T> c)
Collections.sort(intlist, Collections.reverseOrder());
System.out.println(intlist);
결과[89, 88, 81, 68, 63, 60, 52, 49, 46, 31]
테스트 코드
public static void main(String[] args) {
// Create array & list with int
int[] intary = new int[10];
ArrayList<Integer> intlist = new ArrayList<>();
for(int i = 0; i<10; i++){
intary[i] = (int)(Math.random()*100);
intlist.add((int)(Math.random()*100));
}
System.out.println("Original Array");
System.out.println(Arrays.toString(intary));
// 1-1 & 2-1 Duplicate / Create arrays for test
int[] intary_asc = intary;
Integer[] intary_desc = new Integer[intary.length];
Arrays.setAll(intary_desc, i -> intary[i]);
// 1. Array in ascending order
Arrays.sort(intary_asc);
System.out.println("1. Array in ascending order");
System.out.println(Arrays.toString(intary_asc));
// 2. Array in descending order
Arrays.sort(intary_desc, Collections.reverseOrder());
System.out.println("2. Array in descending order");
System.out.println(Arrays.toString(intary_desc));
System.out.println("\nOriginal List");
System.out.println(intlist);
// 3-1 & 4-1 Duplicate lists for test
ArrayList<Integer> intlist_asc = intlist;
ArrayList<Integer> intlist_desc = intlist;
// 3-2. List in ascending order
Collections.sort(intlist_asc);
System.out.println("3. List in ascending order");
System.out.println(intlist_asc);
// 4-2. List in descending order
Collections.sort(intlist_desc, Collections.reverseOrder());
System.out.println("4. List in ascending order");
System.out.println(intlist_desc);
}
결과 내보내기Original Array
[58, 22, 33, 51, 9, 25, 28, 36, 91, 3]
1. Array in ascending order
[3, 9, 22, 25, 28, 33, 36, 51, 58, 91]
2. Array in descending order
[91, 58, 51, 36, 33, 28, 25, 22, 9, 3]
Original List
[2, 51, 65, 33, 12, 23, 26, 16, 66, 78]
3. List in ascending order
[2, 12, 16, 23, 26, 33, 51, 65, 66, 78]
4. List in ascending order
[78, 66, 65, 51, 33, 26, 23, 16, 12, 2]
Reference
이 문제에 관하여(정렬(배열 OR 목록) x (내림차순 OR 오름차순)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/asz/articles/5523a27fade92a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)