//*********
// 快速排序中的划分 ,<<数据结构》算法10.6(b)
// 思路: 两边向中间靠拢。初始的时候,游标在左边端;其数值已经被temp保护。然后,在右端发现比游标值小的,便可以扔到左端。这样游标便到了右端。
//在左端发现了比游标值大的,就扔到了右端。(右一次,左一次,不断重复。。)
NumType Partion(ElemType A[],NumType low, NumType high)
{
ElemType temp=A[low];// 初始化为最低位置的元素
do //
{
while( (A[high]>=temp) && (low<high))// 从右到左找到第一个比temp 小的。
{
high--;
}
if(low<high) A[low++]=A[high];// low++是为下一次执行做做的准备
while( (A[low]<=temp) && (low<high))// 从到左找到右找到第一个比temp 大的。
{
low++;
}
if(low<high) A[high--]=A[low];// high--是为下一次执行做做的准备
}while(low!=high);
A[low]=temp; // 基准最后定为到了位置。此时low=high 正式中间位置。
return low; //
}///end NumType Partion(ElemType A[],NumType low, NumType high)
int fac(int n)
{
if(n==1 || n==2)
return 1;
return n*fac(n-1);
}/// end fac(int n);
// 快速排序中的划分 ,<<数据结构》算法10.6(b)
// 思路: 两边向中间靠拢。初始的时候,游标在左边端;其数值已经被temp保护。然后,在右端发现比游标值小的,便可以扔到左端。这样游标便到了右端。
//在左端发现了比游标值大的,就扔到了右端。(右一次,左一次,不断重复。。)
NumType Partion(ElemType A[],NumType low, NumType high)
{
ElemType temp=A[low];// 初始化为最低位置的元素
do //
{
while( (A[high]>=temp) && (low<high))// 从右到左找到第一个比temp 小的。
{
high--;
}
if(low<high) A[low++]=A[high];// low++是为下一次执行做做的准备
while( (A[low]<=temp) && (low<high))// 从到左找到右找到第一个比temp 大的。
{
low++;
}
if(low<high) A[high--]=A[low];// high--是为下一次执行做做的准备
}while(low!=high);
A[low]=temp; // 基准最后定为到了位置。此时low=high 正式中间位置。
return low; //
}///end NumType Partion(ElemType A[],NumType low, NumType high)
int fac(int n)
{
if(n==1 || n==2)
return 1;
return n*fac(n-1);
}/// end fac(int n);