C\#정렬 알고리즘 의 빠 른 정렬
1578 단어 빠 른 정렬
namespace QuickSort
{
class QuickSort
{
public static void Sort(int[] array)
{
DoSort(array,0, array.Length-1);
}
private static void DoSort( int[] array, int start, int end)
{
if( start < end)
{
int temp = Partition(array, start, end);
DoSort(array, start, temp-1);
DoSort(array, temp + 1, end);
}
}
private static int Partition(int[] array,int start, int end)
{
int index = start - 1;
for( var i=start; i< end; i++)
{
if( array[i] < array[end])
{
index++;
Swap(array, index, i);
}
}
Swap(array, index +1, end);
return index + 1;
}
private static void Swap(int[] array, int index1, int index2)
{
var temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
}
}
이상 은 빠 른 정렬 을 위 한 코드 입 니 다.여기 에는 두 가지 중요 한 방법 이 있 습 니 다.1.Partition:이 방법 은 배열 의 특정한 요 소 를 참고 요소(축 요소 나 주요 요소)로 하고 배열 을 세 개의 구역 으로 나 누 는 것 입 니 다.[<=참고 요소][>=참고 요소]2.DoSort:이 방법 은 Partition 을 호출 하여 배열 을 구분 합 니 다.그리고 새로 생 긴 하위 배열 에서 재 귀적 호출 은 최종 적 으로 질서 있 는 목적 을 달성 합 니 다.위 에서 제시 한 코드 는 배열 의 마지막 요 소 를 참고 요소 로 하 는데 이것 은 참고 요소 가 선택 한 방식 중 하나 일 뿐이다.우 리 는 또한 즉시 배열 의 요소 나 배열 중간 요 소 를 참고 요소 로 선택 할 수 있다.사실 참고 요소 의 선택 은 빠 른 정렬 성능 에 큰 영향 을 미친다.매번 선택 한 참고 요소 가 배열 을 상대 적 으로 균형 잡 힌 구역 으로 나 눌 수 있다 면 빠 른 정렬 은 가장 빠 른 정렬 알고리즘 이 될 것 입 니 다.그러나 또 다른 극단 적 인 상황 에서 매번 나 누 어 지 는 배열 은 1 과 n-1 의 관계 이 고 빠 른 정렬 은 느 려 집 니 다.구체 적 인 성능 데이터 뒤에 다시 연 구 를 토론 하 자.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 구현 알고리즘 빠 른 정렬빠 른 정렬 을 분 치 법 이 라 고 하지만 분 치 법 이라는 세 글 자 는 빠 른 정렬 의 모든 절 차 를 잘 요약 할 수 없다.그래서 저 는 빠 른 정렬 에 대해 진일보 한 설명 을 했 습 니 다. a [0] 의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.