컴퓨터프로그래밍

프로그래밍 방법으로 퀵

1960 년, K. A. Hoar 프는 정보의 신속한 정렬하는 방법을 개발 한 가장 유명한되었다. 그것은 긍정적 인 특성을 많이 가지고 같이 오늘날 널리 프로그래밍에 사용되는 : 그것은 일반적인 경우에 사용할 수 있습니다, 그것은 목록의 다른 유형과 호환하고 쉽게 구현할 추가 메모리의 작은 증가를 필요로한다. 사용하여 작업 많은 실수를 허용하고, 다소 불안정 :하지만 퀵이 가지고있는 단점이있다.

그러나, 대부분의 연구 버전입니다. 첫 번째 지불 호어 후, 많은 사람들이 그 밀도 연구를 수행. 큰 기본은 경험적 증거에 의해 뒷받침되는 작업에 소요되는 시간을 찾는 이론적 인 질문에 설립되었습니다. 기본 알고리즘과 증가 속도를 개선하기 위해 실제 제안이 있었다.

퀵는이 곳에서 찾을 수 있습니다, 매우 일반적입니다. 그 근거에있어서 델파이는 C ++에서를 qsort을 완료하는 데 걸린 시간 라이브러리 함수 (1 제외)의 모든 버전 본 TList.Sort을 구현된다.

연산의 기본 원리는 "분할 정복하고"로 제형 화 될 수있다. 그것은 두 그룹으로 목록을 깨는 발생하고 그 자체로 각 파트 분류되어 있습니다. 기본 요소에 의해 결정되고, 상대적으로 자신의 전체 목록을 재 배열하고있다 : 더 많은 관심이 다음이 발생하는 동안 분리 공정에 지불해야한다고 다음과 같습니다. 후보자의 그룹의 왼쪽에 내장, 값이있는 모든 다른 연결 규칙보다 작습니다. 그것은 정렬 된 목록의 주요 요소가 제자리에 있는지 밝혀졌습니다. 다음 단계 - 상기베이스에 대하여 엘리먼트의 양측에 대한 도전 재귀 정렬 기능한다. 그것은 그 정렬하는 것입니다, 프로세스가 목록에 하나 개의 요소가있는 경우에만 작동합니다 끝납니다. 따라서, 빠른 일종의 프로그래밍 기능을 마스터하기 위해서는 낮은 수준의 알고리즘의 일을 알 필요가있다 : A)베이스 부재의 선택; b) 가장 효과적인 치환의리스트가 작고 값이 큰 두 세트를 생성한다.

첫 번째 원칙을했습니다. 베이스 부재를 선택할 때, 이상적으로 평균 목록에서 선택해야합니다. 이어서 브레이크 두 절반으로 분할된다. 그냥 계산 평균 값 목록에 매우 어려운, 그래서 심지어 가장 빠른 정렬이 미적분 측면을 무시합니다. 그러나 최대 또는 최소 값으로 기본 요소의 선택 -도없는 최선의 선택. 경우에 하나의 이러한 결정은 빈 목록을 보장하고, 상기 제 전체 생성한다. 따라서,베이스 부재로서 평균에 가까운 하나를 선택하지만, 최대 및 최소에 있어야 결론.

선택의 여지가 결정되면, 당신은 분해 알고리즘을 진행할 수 있습니다. 이것은 빠른 정렬 내부 루프에게 소위. 모든 것은이 빠른 액세스 인덱스에 내장되어 있습니다 : 첫 번째 오른쪽에서 왼쪽으로, 반대로, 오른쪽, 두 번째 왼쪽에서 요소를 이동합니다. 작업 실행 권한을 시작 : 인덱스가 목록에 주에 모든 값을 비교합니다. 요소가 기준보다 작거나 같은 경우 사이클이 완료됩니다. 즉,이 비교는 상기 지표의 값이 감소된다. 왼쪽에 작업이 같거나 큰 값 완료되면. 여기서, 상기 비교 값이 증가한다.

퀵 구성 분할 알고리즘이 단계에서, 두 가지 경우가 발생할 수있다. 첫 번째는 왼쪽에 인덱스를 잘 미만이다. 이 오류를 나타냅니다, 다음이 목록에 언급 된에 요소가 잘못된 순서로되어있다. 출력 - 자신의 장소를 변경합니다. 열이 모두 같거나 교차 할 때 두 번째 상황이다. 이것은 즉, 작업이 완료되었습니다,리스트의 성공적인 분리를 나타냅니다.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ko.atomiyme.com. Theme powered by WordPress.