빠른 정렬 알고리즘 귀속과 비귀속 실현
7149 단어 빠른 정렬
/********************************
*
*
*********************************/
#include <stdio.h>
/******************************
*
* pList
* nLow
* nHigh
*****************************/
int Partiton(int *pList,int nLow,int nHigh)
{
int nTmp = pList[nLow];
while(nLow < nHigh)
{
while(nLow < nHigh && nTmp <= pList[nHigh])
{
nHigh--;
}
pList[nLow] = pList[nHigh];
while(nLow < nHigh && nTmp >= pList[nLow])
{
nLow++;
}
pList[nHigh] = pList[nLow];
}
pList[nLow] = nTmp;
return nLow;
}
/**************************
* Partition
*
*
**************************/
void QuickSort(int *pList,int nLow, int nHigh)
{
int nPivotLoc;
if(nLow < nHigh)
{
nPivotLoc = Partiton(pList, nLow, nHigh);
QuickSort(pList, nLow, nPivotLoc - 1);
QuickSort(pList, nPivotLoc + 1, nHigh);
}
}
/******************************
*
*
*
******************************/
void Sort(int *pList, int nLow, int nHigh)
{
int *pPosArr = (int *)malloc((nHigh - nLow + 1)*sizeof(int));
int nPos = 0;
int nTmpLow;
int nTmpHigh;
int nPivotLoc;
pPosArr[nPos++] = nLow;
pPosArr[nPos++] = nHigh;
while(nPos > 0)
{
nTmpHigh = pPosArr[--nPos];
nTmpLow = pPosArr[--nPos];
if(nTmpLow >= nTmpHigh)
{
break;
}
nPivotLoc = Partiton(pList, nTmpLow, nTmpHigh);
if(nPivotLoc - 1 > nTmpLow)
{
pPosArr[nPos++] = nLow;
pPosArr[nPos++] = nPivotLoc - 1;
}
if(nPivotLoc + 1 < nTmpHigh)
{
pPosArr[nPos++] = nPivotLoc + 1;
pPosArr[nPos++] = nHigh;
}
}
free(pPosArr);
}
/******************************
*
*
*****************************/
int main(void)
{
int nList[] = {49, 38, 65, 97, 76, 13, 27, 49};
int i;
Sort(nList,0,sizeof(nList)/sizeof(int) - 1);
for(i = 0; i < 8; i++)
{
printf("%d ",nList[i]);
}
putchar('
');
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 거품 정렬 및 빠른 정렬 코드거품 정렬: 기본 사상: 정렬해야 할 한 조의 수에서 현재 정렬되지 않은 범위 내의 모든 수를 위에서 아래로 서로 인접한 두 수를 순서대로 비교하고 조정하여 비교적 큰 수를 아래로 가라앉히고 비교적 작은 수를 위로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.