오봉이와 함께하는 개발 블로그
Quick Sort - 배열 크기 입력, 0번 부터 값 입력, 내림차순 출력 본문
728x90
package AlgoPractice.sort;
import java.util.Arrays;
import java.util.Scanner;
public class QuickSortHomeW {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("학생 수 입력 : ");
int students = scan.nextInt();
int[] arr = new int[students];
System.out.println();
for(int i = 0; i < arr.length; i++) {
System.out.print("학생 " + (i+1) + " 점수 입력 : ");
arr[i] = scan.nextInt();
}
quickSort(arr,0,arr.length-1);
System.out.println();
System.out.println("성적 순으로 정렬");
for(int i = 0; i < arr.length; i++) {
System.out.println((i+1) + "등 : " + arr[i]);
}
}
static void quickSort(int[] arr, int low, int high) {
if(low >= high) {
return;
}
int pivot = low;
int i = low + 1;
int j = high;
int temp;
while(i <= j) { // 교차할 때 까지 반복 j가 i보다 크면 while문 종료
while(i <= high && arr[i] > arr[pivot]) { // 피벗보다 큰 값을 만날 때 까지 반복
i++;
}
while (j > low && arr[j] <= arr[pivot]) { // 피벗보다 작은 값을 만날 때 까지 반복
j--;
}
if(i > j) { // 교차한 상태가 되면 피복과 j 교환
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
}
else { // i와 j값 교환
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
quickSort(arr, low, j-1);
quickSort(arr, j+1, high);
}
}
728x90
'알고리즘 & 자료구조 & 네트워크' 카테고리의 다른 글
JSON 형식(JSONArray, JSONObject) (0) | 2022.01.30 |
---|---|
이진 탐색 트리 - 추가, 삭제, 검색, 전체 순회 (0) | 2021.12.05 |
해싱(Hashing) (0) | 2021.12.01 |
탐색(Search) - 순차, 이진, 보간, 이진 트리 (0) | 2021.12.01 |
힙 정렬(Heap Sort) (0) | 2021.12.01 |
Comments