- 버블 소팅2024년 07월 12일
- chantleman
- 작성자
- 2024.07.12.:17
배열 데이터 정렬할 때 쓰이는 방법중에는 버블 소팅이 있습니다.
버블소팅을 통해 배열에 있는 데이터를 하나하나씩 비교해서 오름차순 혹은 내림차순으로 정렬시킬 수 있습니다.
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를 사용해야합니다.
728x90'자바' 카테고리의 다른 글
점3개로 삼각형 넓이 구하기 예제 (1) 2024.07.15 constructor, 생성자 (0) 2024.07.15 버블 소팅 이용한 로또 예제 (0) 2024.07.12 배열 복사 (0) 2024.07.12 필드 (0) 2024.07.12 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)