English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 예제에서는 Java에서 빠른 정렬 알고리즘을 구현하는 방법을 배웁니다.
Java의 빠른 정렬 알고리즘을 배우기 전에, 빠른 정렬 알고리즘의 작동 원리를 이해해야 합니다.
//Java에서의 빠른 정렬 import java.util.Arrays; class Main { //데이터 축에 따라 배열을 분할합니다 int partition(int array[], int low, int high) { //마지막 요소를 축으로 선택합니다 int pivot = array[high]; //두 번째 포인터를 초기화합니다 int i = (low - 1); //축보다 작은 요소를 왼쪽에 두습니다 //축의 우측에 있는 더 큰 축 for (int j = low; j < high; j++) { //모든 요소를 pivot과 비교합니다 //pivot보다 큰 요소를 교환합니다 //요소가 pivot보다 작습니다 //내림차순으로 정렬합니다 // if (array[j] >= pivot) if (array[j] <= pivot) { //두 번째 포인터를 증가시킵니다。 //더 큰 요소를 작은 요소로 대체합니다 i++; int temp = array[i]; array[i] = array[j]; array[j] = temp; } } //그래서 왼쪽의 요소가 더 작습니다 //pivot보다 왼쪽의 요소가 큽니다 int temp = array[i + 1]; array[i + 1] = array[high]; array[high] = temp; return (i + 1); } void quickSort(int array[], int low, int high) { if (low < high) { //축 위치를 선택하고 모든 요소를 작게 놓습니다 //좌轴은 축보다 크고, 우轴은 축보다 큽니다 int pi = partition(array, low, high); //轴左侧의 요소를 정렬합니다 quickSort(array, low, pi - 1); //轴右侧의 요소를 정렬합니다 quickSort(array, pi + 1, high); } } public static void main(String args[]) { //정렬되지 않은 배열을 생성합니다 int[] data = { 8, 7, 2, 1, 0, 9, 6 }; int size = data.length; //Main 클래스의 객체를 생성합니다 Main qs = new Main(); //첫 번째와 마지막 인덱스를 배열에 전달합니다 qs.quickSort(data, 0, size - 1); System.out.println("정렬된 배열: "); System.out.println(Arrays.toString(data)); } }
출력1
정렬되지 않은 배열: [8, 7, 2, 1, 0, 9, 6] 정렬된 배열: [0, 1, 2, 6, 7, 8, 9]
여기서, 배열의 요소는 오름차순으로 정렬됩니다. 요소를 내림차순으로 정렬하려면 Partition() 메서드의 for 루프에서 코드를 변경할 수 있습니다:
//소문자 더하기 변경 if (array[j] >= pivot) {