快排

//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的博客

他把快排算法阐述的非常简单易懂,我只看了一遍就会了,非常感谢这位博主!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值