> 백엔드 개발 > C#.Net 튜토리얼 > C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

coldplay.xixi
풀어 주다: 2020-08-08 10:13:02
원래의
3599명이 탐색했습니다.

빠른 정렬 방법 정리 방법: 먼저 정렬할 때마다 기준점을 설정하고 기준점보다 작거나 같은 숫자를 모두 기준점 왼쪽에 놓은 다음 그보다 크거나 같은 숫자를 모두 넣습니다. 기준점 오른쪽에 있는 기준점과 같습니다. 마지막으로 모든 교환은 매번 인접한 숫자 사이에서만 교환할 수 있는 버블 정렬과 같지 않으며 교환 거리가 훨씬 더 길어집니다.

C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

빠른 정렬의 정렬 방법:

알고리즘 아이디어:

(1) 레코드 시퀀스에서 기본 요소(키라고 함)로 정렬할 레코드(보통 첫 번째 레코드)를 선택합니다. )key=arr[left], 그리고 두 개의 변수를 설정합니다. left는 배열의 가장 왼쪽 부분을 가리키고 right는 데이터의 가장 오른쪽 부분을 가리킵니다.

C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

(2) Key는 먼저 arr[right]와 비교됩니다. arr[right]key, 그러면 right--, right--만 비교한 다음 arr[right]

C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

(3) 오른쪽에 arr[right]key이면 arr[right]=arr[left]이고, arr[left]

C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

(4) 그런 다음 오른쪽으로 이동하여 위 단계를 반복합니다.

C 언어에서 빠른 정렬을 사용하여 정렬하는 방법

(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 비디오 튜토리얼

위 내용은 C 언어에서 빠른 정렬을 사용하여 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿