/**************************************************/
/* 函数功能:快速排序算法 */
/* 函数参数=> */
/* tab: 将要排序的目标数组 */
/* left: 数组中第一个元素(最左端元素)的下标 */
/* right: 数组中最后一个元素(最右端元素)的下标 */
/* 函数返回值:空 */
/* 文件名:quicsort.c 函数名:quicksort () */
/**************************************************/
void quicksort(int *tab,int left,int right)
{
int i,j;
int standard;
if(left<right)
{
i=left;j=right;
standard=tab[i];//准备以本次最左边的元素值为标准进行划分,先保存其值
do
{
while(tab[j]>standard&&i<j)//从右向左找第1个小于标准值的位置j
j--; //找到了,位置为j
if(i<j)
{
tab[i]=tab[j];i++;//将第j个元素置于左端并重置i
}
while(tab[i]<standard&&i<j)
i++; //从左向右找第1个大于标准值的位置i
if(i<j) //找到了,位置为i
{
tab[j]=tab[i];j--;//将第i个元素置于右端并重置j
}
}while(i!=j);
tab[i]=standard; //将标准值放入它的最终位置,本次划分结束
quicksort(tab,left,i-1); //对标准值左半部递归调用本函数
quicksort(tab,i+1,right); //对标准值右半部递归调用本函数
}
}
快速排序算法 函数实现
最新推荐文章于 2020-08-20 23:11:10 发布