배열 데이터 정렬할 때 쓰이는 방법중에는 버블 소팅이 있습니다.
버블소팅을 통해 배열에 있는 데이터를 하나하나씩 비교해서 오름차순 혹은 내림차순으로 정렬시킬 수 있습니다.
int [] arr = {90,80,70,69,50};
int cnt=0;
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-1;j++)
{
cnt++;
if(arr[j]<arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("반복문 시행 횟수: "+cnt);
이렇게 하면 16번 반복실행하게 됩니다.
버블소팅은 하나하나씩 다 실행해보기 때문에 속도가 느립니다.
int [] arr = {90,80,70,69,50};
int cnt=0;
for(int i=0;i<arr.length-1;i++)
{
boolean chk= true;
for(int j=0;j<arr.length-1;j++)
{
cnt++;
if(arr[j]<arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
chk=false;
}
}
if(chk) break;
}
System.out.println("반복문 시행 횟수: "+cnt);
하지만 이런식으로 이미 배열이 정렬돼있을 때 불필요한 비교를 줄여주는 역할을 하므로써 속도를 줄일 수 있습니다.
또한 정렬을 쉽게 하기 위해서는 Arrays.sort()를 사용하는 방법이 있는데
int [] arr = {68,75,42,90,61};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
그냥 arr을 출력하게 되면
이런 주소값이 나오기 때문에
Arrays.toString()을 통해서 배열을 문자열로 바꿔준 후에 출력해야합니다.
Integer [] arr={68,73,29,19,23};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr2));
이건 collections을 사용해서 내림차순으로 정렬한 모습입니다.
주의할 점은 collections.reservseOrder()는 coparator를 반환하는데
이 comparator는 객체를 비교합니다.
기본형인 int는 객체가 아니기 때문에 collections.reverseOrder()와 함께 사용할 수 없어서
배열 선언할 때 Int 대신 Integer를 사용해야합니다.
'자바' 카테고리의 다른 글
점3개로 삼각형 넓이 구하기 예제 (1) | 2024.07.15 |
---|---|
constructor, 생성자 (0) | 2024.07.15 |
버블 소팅 이용한 로또 예제 (0) | 2024.07.12 |
배열 복사 (0) | 2024.07.12 |
필드 (0) | 2024.07.12 |