빠 른 배열 과 병합 정렬 (기본 기능)
1208 단어 데이터 구조
사고: 먼저 정확 한 요소 위 치 를 확정 한 다음 에 이 를 통 해 배열 을 2 로 나 누 어 재 귀적 으로 호출 합 니 다.
void quicksort(int a[],int low,int high)
{
if(low>=high) return;
int key = a[low];
int first = low;
int last = high;
while(first=key) --last;
a[first] = a[last];
while(first
2. 병합 정렬
void Merge(int sourceArray[],int tempArray[],int s,int mid,int t)
{
int i = s ;
int j = mid+1;
int k = s;
while(i<=mid && j<=t)
{
if(sourceArray[i]<=sourceArray[j])
tempArray[k++] = sourceArray[i++];
else
tempArray[k++] = sourceArray[j++];
}
while(i<=mid)
tempArray[k++] = sourceArray[i++];
while(j<=t)
tempArray[k++] = sourceArray[j++];
for(i=s;i<=t;i++)
sourceArray[i] = tempArray[i];
}
void MergeSort(int sourceArray[],int tempArray[],int s,int t)
{
if(s>1;
MergeSort(sourceArray,tempArray,s,mid);
MergeSort(sourceArray,tempArray,mid+1,t);
Merge(sourceArray,tempArray,s,mid,t);
}
}