您的位置:首页 > 理论基础 > 数据结构算法

快排

2016-06-16 16:31 274 查看
//Quick sort
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void quickSort(int *ipBuf,int iLow,int iHigh);
int change(int *ipBuf,int iLow,int iHigh);

void main()
{
int ipBuf[20]={0},iSize=0;
char *cpTemp=malloc(50);
gets(cpTemp);
while(cpTemp[iSize])
{
ipBuf[iSize]=cpTemp[iSize++]-48;
}
quickSort(ipBuf,0,iSize-1);
free(cpTemp);
}
int change(int *ipBuf,int iLow,int iHigh)
{
int iKey=ipBuf[iLow];
while(iLow<iHigh)
{
while(iLow<iHigh && ipBuf[iHigh]>=iKey) iHigh--;
if(iLow<iHigh)
ipBuf[iLow++]=ipBuf[iHigh];
while(iLow<iHigh && ipBuf[iLow]<=iKey) iLow++;
if(iLow<iHigh)
ipBuf[iHigh--]=ipBuf[iLow];
}
ipBuf[iLow]=iKey;
return iLow;
}

void quickSort(int *ipBuf,int iLow,int iHigh)
{
int iPivotKey=0;
if(iLow<iHigh)
{
iPivotKey=change(ipBuf,iLow,iHigh);
quickSort(ipBuf,iPivotKey+1,iHigh);
quickSort(ipBuf,iLow,iPivotKey-1);
}
}

算法思想强烈推荐:MoreWindows的博客

他把快排算法阐述的非常简单易懂,我只看了一遍就会了,非常感谢这位博主!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息