빠른 정렬 방법 정리 방법: 먼저 정렬할 때마다 기준점을 설정하고 기준점보다 작거나 같은 숫자를 모두 기준점 왼쪽에 놓은 다음 그보다 크거나 같은 숫자를 모두 넣습니다. 기준점 오른쪽에 있는 기준점과 같습니다. 마지막으로 모든 교환은 매번 인접한 숫자 사이에서만 교환할 수 있는 버블 정렬과 같지 않으며 교환 거리가 훨씬 더 길어집니다.
빠른 정렬의 정렬 방법:
알고리즘 아이디어:
(1) 레코드 시퀀스에서 기본 요소(키라고 함)로 정렬할 레코드(보통 첫 번째 레코드)를 선택합니다. )key=arr[left], 그리고 두 개의 변수를 설정합니다. left는 배열의 가장 왼쪽 부분을 가리키고 right는 데이터의 가장 오른쪽 부분을 가리킵니다.
(2) Key는 먼저 arr[right]와 비교됩니다. arr[right] (3) 오른쪽에 arr[right] (4) 그런 다음 오른쪽으로 이동하여 위 단계를 반복합니다. (5) 마지막으로 {23 58 13 10 57 62} 65 {106 78 95 85}를 얻은 다음 왼쪽 하위 배열을 비교합니다. 및 오른쪽 하위 배열 동일한 작업을 수행합니다. 마지막으로 정렬된 시퀀스가 얻어집니다. 알고리즘 구현: 관련 학습 권장 사항: C 비디오 튜토리얼public class QuickSort {
public static void quickSort(int [] arr,int left,int right) {
int pivot=0;
if(left<right) {
pivot=partition(arr,left,right);
quickSort(arr,left,pivot-1);
quickSort(arr,pivot+1,right);
}
}
private static int partition(int[] arr,int left,int right) {
int key=arr[left];
while(left<right) {
while(left<right && arr[right]>=key) {
right--;
}
arr[left]=arr[right];
while(left<right && arr[left]<=key) {
left++;
}
arr[right]=arr[left];
}
arr[left]=key;
return left;
}
public static void main(String[] args) {
int arr[]= {65,58,95,10,57,62,13,106,78,23,85};
System.out.println("排序前:"+Arrays.toString(arr));
quickSort(arr,0,arr.length-1);
System.out.println("排序后:"+Arrays.toString(arr));
}
}
排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85]
排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]
위 내용은 C 언어에서 빠른 정렬을 사용하여 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!