빠른 정렬의 간단한 실현
분치 전략을 결합하여 빠른 정렬에서 하나의 기준 요소를 선택하여 두 부분으로 나누면 기준 원소보다 크고 기준 원소보다 작다.매번 이런 효율로 나누면 우리가 취한 기준이 매번 정렬을 기다리는 전체 원소의 중심이 된다는 것을 알 수 있다.
T(n)=T(n/2)+T(n/2)+O(n)
T(n) = O(nlgn)
최악의 경우
T(n)=T(n-1)+T(0)+O(n)
이때 T(n) = O(n^2)
명확한 차이는 어떻게 기준을 잘 선택하는가가 빠른 배열에 있어서는 그 효율과 직결된다.
다음은 가장 간단한 방식으로 빠른 정렬을 실현하고자 합니다. 사상은 일치하는 것이 다르고 기준 원소를 선택하는 방식만 다릅니다. 여기서 가장 간단한 것을 취합니다. 매번 고정 테이프 정렬의 마지막 원소를 취합니다.
int partition(int *A,int p,int r)
{
int temp=A[r-1];
int i=p,j=p;
for(;j<r-1;j++)
{
if(A[j]<temp)
{
swap(A[i],A[j]);
i++;
}
}
swap(A[i],A[r-1]);
}
void qsort(int *A,int p,int r)
{
if(p<r)
{
int q=partition(A,p,r);
qsort(A,p,q-1);
qsort(A,q+1,r);
}
}
만약 빠른 정렬의 효율이 높아진다면, 대략적인 중위수 방식을 사용할 수 있다. 즉, 한 번씩 차이가 많지 않은 중간의 수를 뽑거나 무작위 수를 직접 뽑아도 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 백엔드에서 데이터를 트리로 변환하고 맵은 json 트리를 생성하여 백엔드로 되돌려줍니다. (백엔드 변환)java 백엔드, 데이터를 트리로 변환하고,map는 json 트리를 생성하여 전방으로 되돌려줍니다(백엔드 변환) 1. 왜 이런 블로그를 쓰나요? 2.java 백엔드 코드 3. 전환된 데이터는 다음과 유사한 형식으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.